我们在MariaDB引擎下运行我们的数据库。 目前我有这个查询,它完全符合我的需要:
CREATE FUNCTION `taskCompleti`(
idCamp INT
)
returns table
as
BEGIN
SELECT task.titolo, risposte.valore
FROM task
INNER JOIN risposte ON task.Id = risposte.id_task
WHERE task.ID_campagna=@idCamp
AND task.stato = 1
AND task.risultato = risposte.id
END
但是,我希望查询更通用,特别是对于WHERE子句中所需的字段。
我们尝试创建这样的存储功能:
MySQL Error Number 1064
You have an error in you SQL syntax, ...
但是当我们尝试运行它时,它会给我们这个错误:
{{1}}
我们在这里做错了什么?该问题的任何解决方案?
由于
答案 0 :(得分:1)
在MySQL中编写表值存储函数是不可能的。
在MySQL中为per documentation on user-defined functions
您只能返回{STRING|INTEGER|REAL|DECIMAL}
类型的值。
对于您的情况,您必须使用Procedure
,如下所示:
CREATE PROCEDURE
taskCompleti( idCamp INT )
BEGIN
SELECT task.titolo, risposte.valore
FROM task
INNER JOIN risposte ON task.Id = risposte.id_task
WHERE task.ID_campagna = idCamp
AND task.stato = 1
AND task.risultato = risposte.id
END
AND
按照以下方式调用您的程序:
CALL taskCompleti( 1 )