SQL use comma-separated values with IN clause

前端 未结 9 1777
终归单人心
终归单人心 2020-12-19 08:49

I am developing an ASP.NET application and passing a string value like \"1,2,3,4\" into a procedure to select those values which are IN (1,2,3,4) but its saying \"Conversion

9条回答
  •  Happy的楠姐
    2020-12-19 09:27

    It is not possible to put those values (the comma separated string) in a parameter-value.

    What you'll have to do, is to create the SQL Statement in your stored procedure dynamically, by string concatenation. You'll have to execute it with the sp_executesql stored procedure then.

     CREATE PROCEDURE [dbo].[getUserRoles]( @groupIds NVARCHAR(50) ) 
     AS BEGIN   
        DECLARE @statement NVARCHAR(255)
    
        SELECT @statement = N'SELECT * FROM CheckList_Groups Where id in ( ' + @pGroupIDs + N')'    
    
        execute sp_executesql @statement 
     END
    

    Also, not that I named the SP getUserRoles instead of sp_getUserRoles. The reason is very simple: when you execute a stored procedure whose name starts with sp_, then SQL Server will first query the master database to find that stored procedure, which causes a performance hit offcourse.

提交回复
热议问题