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

Hvordan sender jeg en liste som en parameter i en lagret procedure?

Den foretrukne metode til at overføre et array af værdier til en lagret procedure i SQL-serveren er at bruge tabelværdierede parametre.

Først definerer du typen sådan her:

CREATE TYPE UserList AS TABLE ( UserID INT );

Så bruger du den type i den lagrede 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)

Så før du kalder den lagrede procedure, udfylder du en tabelvariabel:

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

Og ring endelig til SP:

EXEC dbo.get_user_names @UL, @username OUTPUT;


  1. Java:Indsæt flere rækker i MySQL med PreparedStatement

  2. Hvordan kører man den samme forespørgsel på alle databaser på en instans?

  3. Postgres Venstre Sammenføj med hvor tilstand

  4. Ti tips til at gå i produktion med PostgreSQL