SQL : in clause in stored procedure:how to pass values

前端 未结 8 1885
小蘑菇
小蘑菇 2020-11-27 18:12

I want to write a SQL Server 2005 stored procedure which will select and return the user records from the user table for some userids which are passed to the stored procedur

相关标签:
8条回答
  • 2020-11-27 18:52

    You can also use Find_IN_SET instead of IN. See the query below

    create procedure myproc(IN in_user_ids varchar(100)) 
    begin
       select * from users where FIND_IN_SET(userid, in_user_ids);
    end
    
    0 讨论(0)
  • 2020-11-27 18:54

    For SQL Server 2005, check out Erland Sommarskog's excellent Arrays and Lists in SQL Server 2005 article which shows some techniques how to deal with lists and arrays in SQL Server 2005 (he also has another article for SQL Server 2000).

    If you could upgrade to SQL Server 2008, you can use the new feature called "table valued parameter":

    First, create a user-defined table type

    CREATE TYPE dbo.MyUserIDs AS TABLE (UserID INT NOT NULL)
    

    Secondly, use that table type in your stored procedure as a parameter:

    CREATE PROC proc_GetUsers @UserIDTable MyUserIDs READONLY 
    AS
    SELECT * FROM dbo.Users
        WHERE userid IN (SELECT UserID FROM @UserIDTable)
    

    See details here.

    Marc

    0 讨论(0)
提交回复
热议问题