如何解决SQL Server 中带有 IN 和输入变量的 SELECT 语句
有一个带有列的表 (Table1
) -> Column1 int,Column2 int,Column3 varchar(128),Column4 char(11)
需要创建一个存储过程,根据输入参数从Table1中获取详细信息。输入参数保存以逗号分隔的值。它必须与 Column1 映射
Create Procedure ProcedureName(@InputParams VARCHAR(MAX))
AS
BEGIN
SELECT Column2,Column3,Column4
FROM Table1
WHERE Column1 IN (@InputParams)
ORDER BY Column2
END
以下语句抛出转换错误
“将 varchar 值 '123、456、789' 转换为数据类型 int 时转换失败。”
EXEC ProcedureName @InputParams = '123,456,789'
将 SELECT 语句转换为动态查询可以正常工作,但我们能否解决静态查询中的转换问题。请帮帮我。
解决方法
嗯,在这种情况下你有几个选择:
- 表值输入参数:为此,您必须创建一个
UDT
(用户定义的表类型)并将其用作stored procedure
的参数。 - 将逗号分隔的输入字符串参数转换为整数,然后在
IN
子句中使用它们。
不确定您的用例,但一般来说,我建议继续使用第一个选项。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。