sql >> Databasteknik >  >> RDS >> Sqlserver

SQL :i klausul i lagrad procedur:hur man skickar värden

För SQL Server 2005, kolla in Erland Sommarskogs utmärkta Arrays and Lists in SQL Server 2005-artikel som visar några tekniker hur man hanterar listor och arrayer i SQL Server 2005 (han har även en annan artikel för SQL Server 2000).

Om du kunde uppgradera till SQL Server 2008 kan du använda den nya funktionen som heter "tabellvärderad parameter":

Skapa först en användardefinierad tabelltyp

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

För det andra, använd den tabelltypen i din lagrade procedur som en parameter:

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

Se detaljer här.

Marc



  1. Generera en resultatuppsättning av inkrementerande datum i TSQL

  2. Skillnaden mellan schema / databas i MySQL

  3. RDBMS vs NoSQL

  4. Utfyllnad av nollor till vänster i postgreSQL