Questo è un post più vecchio, ma era quasi all'inizio quando stavo cercando "Parametro a valori di tabella come parametro di output per la procedura memorizzata". Mentre intendo che non è possibile passare un parametro con valori di tabella come parametro di output, immagino che l'obiettivo sia utilizzare quel parametro di output con valori di tabella come parametro di input con valori di tabella in un'altra procedura. Mostrerò un esempio di come ho fatto questo lavoro.
Innanzitutto, crea alcuni dati con cui lavorare:
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' )
;
Quindi, creare una procedura memorizzata per acquisire alcuni dei dati. Normalmente, questo è dove si sta tentando di creare un parametro di output con valori di tabella.
create procedure usp_OUTPUT1
@gender varchar(10)
as
Begin
select id from tbl1 where gender = @gender
End
Inoltre, si desidera creare un tipo di dati (tipo di tabella) in cui i dati della prima procedura memorizzata possano essere passati come parametro di input per la procedura memorizzata successiva.
create type tblType as Table (id int)
Quindi, creare la seconda procedura memorizzata che accetterà il parametro con valori di tabella.
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
Certo, questo non è un vero parametro di output con valori di tabella, ma probabilmente produrrà risultati simili a quello che si sta cercando. Dichiarare il parametro con valori di tabella, riempirlo di dati eseguendo la procedura memorizzata al suo interno, quindi utilizzarlo come variabile di input per la procedura successiva.
Declare @tblType tblType
insert into @tblType execute usp_OUTPUT1 'm'
execute usp_OUTPUT2 @tblType