简体   繁体   English

准备好的语句返回零结果

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM