Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie übergebe ich eine Liste als Parameter in einer gespeicherten Prozedur?

Die bevorzugte Methode zum Übergeben eines Arrays von Werten an eine gespeicherte Prozedur in SQL Server ist die Verwendung von Tabellenwertparametern.

Zuerst definieren Sie den Typ wie folgt:

CREATE TYPE UserList AS TABLE ( UserID INT );

Dann verwenden Sie diesen Typ in der gespeicherten Prozedur:

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)

Bevor Sie also diese gespeicherte Prozedur aufrufen, füllen Sie eine Tabellenvariable:

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

Und schließlich den SP anrufen:

EXEC dbo.get_user_names @UL, @username OUTPUT;