[英]Stored procedure/function that returns a table
我們正在MariaDB引擎下運行數據庫。 當前,我有這個查詢,正是我所需要做的:
SELECT task.titolo, risposte.valore
FROM task
INNER JOIN risposte ON task.Id = risposte.id_task
WHERE task.ID_campagna=1
AND task.stato = 1
AND task.risultato = risposte.id
但是,我希望查詢更加通用,特別是針對WHERE子句中要求的字段。
我們試圖創建一個這樣的存儲函數:
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
但是,當我們嘗試運行它時,會出現以下錯誤:
MySQL Error Number 1064
You have an error in you SQL syntax, ...
我們在做什么錯呢? 有什么解決辦法嗎?
謝謝
無法在MySQL中編寫表值存儲函數。
根據有關 MySQL中用戶定義函數的文檔,您只能返回{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
和
像這樣調用您的過程:
CALL taskCompleti( 1 )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.