値の配列をSQLServerのストアドプロシージャに渡すための推奨される方法は、テーブル値のパラメーターを使用することです。
まず、次のようにタイプを定義します。
CREATE TYPE UserList AS TABLE ( UserID INT );
次に、ストアドプロシージャでそのタイプを使用します:
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)
したがって、そのストアドプロシージャを呼び出す前に、テーブル変数を入力します。
DECLARE @UL UserList;
INSERT @UL VALUES (5),(44),(72),(81),(126)
そして最後にSPを呼び出します:
EXEC dbo.get_user_names @UL, @username OUTPUT;