[英]Prepared statement returning zero results
I am attempting to execute the following prepared statement:我正在尝试执行以下准备好的语句:
PREPARE stmt FROM 'SELECT * FROM Inventory I WHERE I.ParentId = ?';
EXECUTE stmt USING @parentId;
DEALLOCATE PREPARE stmt;
When I execute this statement, it returns the column headers with no rows.当我执行此语句时,它返回没有行的列标题。 It should return 6 rows.
它应该返回 6 行。
If I execute this same statement as a normal SQL statement without the PREPARE and EXECUTE statement, I get results, eg如果我执行与没有 PREPARE 和 EXECUTE 语句的普通 SQL 语句相同的语句,我会得到结果,例如
SELECT * FROM Inventory I WHERE I.ParentId = parentId;
Results are returned.返回结果。 What am I doing wrong?
我究竟做错了什么? Is there some kind of casting going on that is making my statement invalidate?
是否有某种类型的铸造使我的陈述无效?
Update, parentId is passed in as a parameter, eg更新,parentId作为参数传入,例如
CREATE DEFINER=`george`@`%` PROCEDURE `ListInventoryByParentId`(IN parentId INT)
User variable @parentId and procedure argument parentID are independent.用户变量 @parentId 和过程参数 parentID 是独立的。 You need to set your user variable to procedure argument before executing statement.
在执行语句之前,您需要将用户变量设置为过程参数。
SET @parentID = parentId;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.