作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
存储过程:
ALTER PROCEDURE [dbo].[MyProcedure]
@CommaSeperatedValues nvarchar(500)
AS
BEGIN
SET NOCOUNT ON;
SELECT Col1, Col2, Col3
FROM MyTable
WHERE SomeCol_BigIntDataType IN (@CommaSeperatedValues)
来自代码的值是字符串值:“9010073,9010074”
我试过像这样运行 SP:exec MyProcedure '9010073,9010074'
运行 SP 时出现错误“将数据类型 nvarchar 转换为 bigint 时出错”
如果我单独运行选择查询,如下所示:
SELECT Col1, Col2, Col3
FROM MyTable
WHERE SomeCol_BigIntDataType IN (9010073,9010074)
然后我得到了预期的结果。
但我想从 SP 运行。
最佳答案
我们开始吧。你可以通过动态查询来做到这一点
DECLARE @mystring NVARCHAR(max)
DECLARE @UserId NVARCHAR(max)
SET @UserId = '9010073,9010074'
SELECT @mystring = 'SELECT Col1, Col2, Col3 FROM MyTable where UserId IN('+ @UserId +')'
EXEC sp_executesql @mystring
关于sql-server - 存储过程中 IN 运算符导致数据类型 nvarchar 转换为 bigint 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28578600/
我是一名优秀的程序员,十分优秀!