Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come faccio a passare un elenco come parametro in una procedura memorizzata?

Il metodo preferito per passare una matrice di valori a una procedura memorizzata in SQL Server consiste nell'utilizzare parametri con valori di tabella.

Per prima cosa definisci il tipo in questo modo:

CREATE TYPE UserList AS TABLE ( UserID INT );

Quindi usi quel tipo nella stored procedure:

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)

Quindi, prima di chiamare quella stored procedure, riempi una variabile di tabella:

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

E infine chiama l'SP:

EXEC dbo.get_user_names @UL, @username OUTPUT;