簡體   English   中英

返回表的存儲過程/函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM