Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

SQL:nella clausola nella procedura memorizzata:come passare i valori

Per SQL Server 2005, dai un'occhiata all'eccellente articolo di Erland Sommarskog sugli array e sugli elenchi in SQL Server 2005 che mostra alcune tecniche su come gestire gli elenchi e gli array in SQL Server 2005 (ha anche un altro articolo per SQL Server 2000).

Se puoi eseguire l'aggiornamento a SQL Server 2008, puoi utilizzare la nuova funzionalità denominata "parametro con valore di tabella":

Innanzitutto, crea un tipo di tabella definito dall'utente

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

In secondo luogo, usa quel tipo di tabella nella procedura memorizzata come parametro:

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

Vedi i dettagli qui.

Marco