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

¿Cómo paso una lista como parámetro en un procedimiento almacenado?

El método preferido para pasar una matriz de valores a un procedimiento almacenado en el servidor SQL es usar parámetros con valores de tabla.

Primero define el tipo así:

CREATE TYPE UserList AS TABLE ( UserID INT );

Luego usa ese tipo en el procedimiento almacenado:

create procedure [dbo].[get_user_names]
@user_id_list UserList READONLY,
@username varchar (30) output
as
select last_name+', '+first_name 
from user_mstr
where user_id in (SELECT UserID FROM @user_id_list)

Entonces, antes de llamar a ese procedimiento almacenado, complete una variable de tabla:

DECLARE @UL UserList;
INSERT @UL VALUES (5),(44),(72),(81),(126)

Y finalmente llame al SP:

EXEC dbo.get_user_names @UL, @username OUTPUT;