Це старіший пост, але він був біля верху, коли я шукав "Параметр з табличним значенням як вихідний параметр для збереженої процедури". Хоча я розумію, що ви не можете передавати табличний параметр як вихідний параметр, я б міг уявити собі за мету використовувати цей табличний вихідний параметр як табличний вхідний параметр в іншій процедурі. Я покажу приклад того, як я зробив цю роботу.
Спочатку створіть деякі дані, з якими можна працювати:
create table tbl1
(
id int,
fname varchar(10),
gender varchar(10)
);
create table tbl2
(
id int,
lname varchar(10)
);
insert into tbl1
values
(1,'bob' ,'m'),
(2,'tom' ,'m'),
(3,'sally','f')
;
insert into tbl2
values
(1,'jones' ),
(2,'johnson' ),
(3,'smith' )
;
Далі створіть збережену процедуру для захоплення деяких даних. Як правило, саме тут ви намагаєтесь створити вихідний параметр з табличним значенням.
create procedure usp_OUTPUT1
@gender varchar(10)
as
Begin
select id from tbl1 where gender = @gender
End
Крім того, вам потрібно буде створити тип даних (тип таблиці), де дані з першої збереженої процедури можуть передаватися як вхідний параметр для наступної збереженої процедури.
create type tblType as Table (id int)
Далі, створіть другу збережену процедуру, яка прийме параметр, що оцінюється за таблицею.
create procedure usp_OUTPUT2
@tblType tblType readonly --referencing the type created and specify readonly
as
begin
select lname from tbl2 where id in (select id from @tblType)
end
Зрозуміло, це не справжній табличний параметр виходу, але він, ймовірно, дасть результати, подібні до того, що ви б шукали. Задекларуйте свій табличний параметр, заповніть його даними, виконавши в ньому збережену процедуру, а потім використовуйте його як вхідну змінну для наступної процедури.
Declare @tblType tblType
insert into @tblType execute usp_OUTPUT1 'm'
execute usp_OUTPUT2 @tblType