Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como passo uma lista como parâmetro em um procedimento armazenado?


O método preferencial para passar uma matriz de valores para um procedimento armazenado no SQL Server é usar parâmetros com valor de tabela.

Primeiro você define o tipo assim:
CREATE TYPE UserList AS TABLE ( UserID INT );

Então você usa esse tipo no procedimento armazenado:
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)

Portanto, antes de chamar esse procedimento armazenado, você preenche uma variável de tabela:
DECLARE @UL UserList;
INSERT @UL VALUES (5),(44),(72),(81),(126)

E finalmente ligue para o SP:
EXEC dbo.get_user_names @UL, @username OUTPUT;