Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL:in-Klausel in gespeicherter Prozedur:wie Werte übergeben werden

Für SQL Server 2005 lesen Sie Erland Sommarskogs exzellenten Artikel über Arrays und Listen in SQL Server 2005, der einige Techniken zeigt, wie man mit Listen und Arrays in SQL Server 2005 umgeht (er hat auch einen anderen Artikel für SQL Server 2000).

Wenn Sie auf SQL Server 2008 aktualisieren könnten, können Sie die neue Funktion namens „Tabellenwertparameter“ verwenden:

Erstellen Sie zunächst einen benutzerdefinierten Tabellentyp

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

Zweitens verwenden Sie diesen Tabellentyp in Ihrer gespeicherten Prozedur als Parameter:

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

Einzelheiten finden Sie hier.

Markus