'在T-SQL实现中的位置

时间:2010-10-21 04:55:13

标签: sql-server tsql

我有一个存储过程,它接受许多输入参数,包括@userID。

现在,在SP的核心部分,我使用以下Where close视图从视图中进行选择:

Where userID = @userID

这很好用。现在我想通过多个用户来查询它:

where userID in (1,2,...)

如何从一个输入参数传递值1,2?

由于

3 个答案:

答案 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中阅读此内容,因为设置起来可能有点棘手。