2010-06-28 189 views
3

我已經在MySQL中創建一個存儲過程,如:MySQL存儲過程

DELIMITER // 
CREATE PROCEDURE test() 
BEGIN 
    SELECT * FROM buyers; 
END // 
DELIMITER ; 

,但是當我把它用,

call test() 

它返回一個錯誤說:

#1312 - 程序ticketninja.test1無法返回給定上下文中的結果集

回答

2

返回結果集可以存儲procedcure內但不是內存儲的功能中使用的語句。這種禁止包括沒有INTO var_list子句的SELECT語句以及其他語句,如SHOW,EXPLAIN和CHECK TABLE。對於在函數定義時可以確定返回結果集的語句,不允許從函數錯誤返回結果集(ER_SP_NO_RETSET)。對於僅在運行時才能確定以返回結果集的語句,PROCEDURE%s無法返回發生給定上下文中的結果集錯誤(ER_SP_BADSELECT)。

也許你需要使用臨時表,就像這個例子:

+0

它給出了一個錯誤: #1172 - 結果包含多個行 – Kalx 2010-06-28 12:39:39

+0

更新了我的帖子;鏈接的資源包含您可能可以調整的完整示例。 – miku 2010-06-28 12:51:51

2

確保您的代碼(或客戶端庫)調用mysql_set_server_options()啓用MYSQL_OPTION_MULTI_STATEMENTS_ON