2011-05-31 212 views
0

我試圖執行以下準備好的聲明:準備語句,返回結果爲零

PREPARE stmt FROM 'SELECT * FROM Inventory I WHERE I.ParentId = ?'; 
EXECUTE stmt USING @parentId; 

DEALLOCATE PREPARE stmt;

當我執行該語句,返回無行的列標題。它應該返回6行。

如果我執行與沒有PREPARE和EXECUTE語句的普通SQL語句相同的語句,我會得到結果,例如,

SELECT * FROM Inventory I WHERE I.ParentId = parentId; 

結果被返回。我究竟做錯了什麼?是否有某種類型的演員正在使我的陳述失效?

更新,parentId作爲參數傳入,例如,

CREATE DEFINER=`george`@`%` PROCEDURE `ListInventoryByParentId`(IN parentId INT) 

回答

1

用戶變量@parentId和過程參數parentID是獨立的。 您需要在執行語句之前將您的用戶變量設置爲過程參數。

SET @parentID = parentId;