Miu*_*Miu 2 sql-server stored-procedures nvarchar in-operator
存储过程:
ALTER PROCEDURE [dbo].[MyProcedure]
@CommaSeperatedValues nvarchar(500)
AS
BEGIN
SET NOCOUNT ON;
SELECT Col1, Col2, Col3
FROM MyTable
WHERE SomeCol_BigIntDataType IN (@CommaSeperatedValues)
Run Code Online (Sandbox Code Playgroud)
来自Code的值是字符串值:"9010073,9010074"
我尝试像这样运行SP:exec MyProcedure'9010073,9010074'
这是在运行SP时出现错误'错误将数据类型nvarchar转换为bigint'
如果我单独运行select查询,如下所示:
SELECT Col1, Col2, Col3
FROM MyTable
WHERE SomeCol_BigIntDataType IN (9010073,9010074)
Run Code Online (Sandbox Code Playgroud)
然后我得到了预期的结果.
但我想从SP运行.
小智 5
开始了.您可以通过动态查询执行此操作
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
Run Code Online (Sandbox Code Playgroud)