我有一个存储过程,它接受许多输入参数,包括@userID。
现在,在SP的核心部分,我使用以下Where close视图从视图中进行选择:
Where userID = @userID
这很好用。现在我想通过多个用户来查询它:
where userID in (1,2,...)
如何从一个输入参数传递值1,2?
由于
答案 0 :(得分:1)
创建一个功能拆分:
create FUNCTION [dbo].[Split]
(
@List nvarchar(2000),
@SplitOn nvarchar(5)
)
RETURNS @RtnValue table
(
Id int identity(1,1),
Value nvarchar(2000)
)
AS
BEGIN
While (Charindex(@SplitOn,@List)>0)
Begin
Insert Into @RtnValue (value)
Select Value = ltrim(rtrim(Substring(@List,1,Charindex(@SplitOn,@List)-1)))
Set @List = Substring(@List,Charindex(@SplitOn,@List)+len(@SplitOn),len(@List))
End
Insert Into @RtnValue (Value)
Select Value = ltrim(rtrim(@List))
Return
--select Value from dbo.Split('item1, item2, item3',',')
END
GO
用@PASS调用函数并在游标中使用它。
答案 1 :(得分:0)
答案 2 :(得分:0)
创建一个输入参数,它是一个表变量,并在数组中作为您加入的表而不是使用输入。在BOL中阅读此内容,因为设置起来可能有点棘手。