sql >> Databasteknik >  >> RDS >> Sqlserver

Hur skickar jag en lista som en parameter i en lagrad procedur?

Den föredragna metoden för att skicka en array av värden till en lagrad procedur i SQL-servern är att använda tabellvärderade parametrar.

Först definierar du typen så här:

CREATE TYPE UserList AS TABLE ( UserID INT );

Sedan använder du den typen i den lagrade proceduren:

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å innan du anropar den lagrade proceduren fyller du i en tabellvariabel:

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

Och slutligen ring SP:

EXEC dbo.get_user_names @UL, @username OUTPUT;


  1. Varför oracle IN-klausul har en gräns på 1000 endast för statisk data?

  2. Konsten att samla data i SQL från enkla till glidande aggregationer

  3. 5 skäl till varför du behöver en bra databas

  4. Skillnaden mellan SELECT INTO och INSERT INTO i MySQL