Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL:na cláusula no procedimento armazenado:como passar valores


Para o SQL Server 2005, confira o excelente artigo Arrays and Lists in SQL Server 2005 de Erland Sommarskog que mostra algumas técnicas de como lidar com listas e arrays no SQL Server 2005 (ele também tem outro artigo para SQL Server 2000).

Se você puder atualizar para o SQL Server 2008, poderá usar o novo recurso chamado "parâmetro com valor de tabela":

Primeiro, crie um tipo de tabela definido pelo usuário
CREATE TYPE dbo.MyUserIDs AS TABLE (UserID INT NOT NULL)

Em segundo lugar, use esse tipo de tabela em seu procedimento armazenado como parâmetro:
CREATE PROC proc_GetUsers @UserIDTable MyUserIDs READONLY 
AS
SELECT * FROM dbo.Users
    WHERE userid IN (SELECT UserID FROM @UserIDTable)

Veja detalhes aqui.

Marco