sql >> Database >  >> RDS >> Sqlserver

SQL:in clausule in opgeslagen procedure:hoe waarden doorgeven

Voor SQL Server 2005, bekijk Erland Sommarskog's uitstekende Arrays and Lists in SQL Server 2005 artikel waarin enkele technieken worden getoond hoe om te gaan met lijsten en arrays in SQL Server 2005 (hij heeft ook een ander artikel voor SQL Server 2000).

Als je zou kunnen upgraden naar SQL Server 2008, kun je de nieuwe functie genaamd "table valued parameter" gebruiken:

Maak eerst een door de gebruiker gedefinieerd tabeltype

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

Ten tweede, gebruik dat tabeltype in uw opgeslagen procedure als parameter:

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

Bekijk hier de details.

Marc



  1. Gegevens herhaaldelijk van SQL Server naar Oracle verplaatsen

  2. sqlite:hoe voeg ik de totale tijd toe uu:mm:ss waarbij het kolomgegevenstype DATETIME is?

  3. Een overzicht van de JOIN-methoden in PostgreSQL

  4. Hoe ontsnap ik aan een gereserveerd woord in Oracle?