sql >> Base de Datos >  >> RDS >> Sqlserver

SQL:en la cláusula en el procedimiento almacenado:cómo pasar valores

Para SQL Server 2005, consulte el excelente artículo Arrays and Lists in SQL Server 2005 de Erland Sommarskog, que muestra algunas técnicas para tratar con listas y matrices en SQL Server 2005 (también tiene otro artículo para SQL Server 2000).

Si pudiera actualizar a SQL Server 2008, puede usar la nueva característica llamada "parámetro con valores de tabla":

Primero, cree un tipo de tabla definida por el usuario

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

En segundo lugar, use ese tipo de tabla en su procedimiento almacenado como parámetro:

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

Ver detalles aquí.

Marc