我有一个带有一个名为“ @IDs”的输入参数的存储过程。这是从我的应用程序中填充的,该应用程序将以以下格式填充它:“ 2、30、105”。当然,此参数中的值的数量会有所不同(例如:有时@ID有时为‘100,2005,2,510’)我的存储过程非常简单。我有一个名为“人”的表。我正在尝试编写此查询:
Select * From Persons Where P_Id in (@IDs)
P_ID是我表中的主键。我得到的错误是“将varchar值“ 2、3、4”转换为数据类型int时转换失败。” 任何建议将不胜感激。谢谢。
您可能需要准备一份声明。这个想法是建立选择语句,然后执行它。这是一个如何做的例子…
USE mydb; DROP PROCEDURE IF EXISTS execSql; DELIMITER // CREATE PROCEDURE execSql ( IN sqlq VARCHAR(5000) ) COMMENT 'Executes the statement' BEGIN SET @sqlv=concat(concat('select abc from yourtable where abc in (',sqll),')'); PREPARE stmt FROM @sqlv; EXECUTE stmt; DEALLOCATE PREPARE stmt; END // DELIMITER ;
只需将查询更改为您要执行的查询即可。