Dies ist ein älterer Beitrag, der sich jedoch fast oben befand, als ich nach "Tabellenwert-Parameter als Ausgabeparameter für gespeicherte Prozeduren" suchte. Nach meinem Verständnis können Sie keinen Tabellenwert-Parameter als Ausgabeparameter übergeben. Ich würde mir jedoch vorstellen, dass das Ziel darin besteht, diesen Tabellenwert-Ausgabeparameter in einer anderen Prozedur als Tabellenwert-Eingabeparameter zu verwenden. Ich werde ein Beispiel dafür zeigen, wie ich diese Arbeit gemacht habe.
Erstellen Sie zunächst einige Daten, mit denen Sie arbeiten möchten:
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' )
;
Erstellen Sie als Nächstes eine gespeicherte Prozedur, um einige der Daten zu erfassen. Normalerweise versuchen Sie hier einen tabellenwertigen Ausgabeparameter zu erstellen.
create procedure usp_OUTPUT1
@gender varchar(10)
as
Begin
select id from tbl1 where gender = @gender
End
Darüber hinaus möchten Sie einen Datentyp (Tabellentyp) erstellen, in dem die Daten der ersten gespeicherten Prozedur als Eingabeparameter für die nächste gespeicherte Prozedur übergeben werden können.
create type tblType as Table (id int)
Erstellen Sie als Nächstes die zweite gespeicherte Prozedur, die den Tabellenwertparameter akzeptiert.
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
Zugegeben, dies ist kein echter tabellenwertiger Ausgabeparameter, aber er wird wahrscheinlich ähnliche Ergebnisse liefern wie Sie. Deklarieren Sie Ihren tabellenwertigen Parameter, füllen Sie ihn mit Daten, indem Sie die gespeicherte Prozedur ausführen, und verwenden Sie ihn dann als Eingabevariable für die nächste Prozedur.
Declare @tblType tblType
insert into @tblType execute usp_OUTPUT1 'm'
execute usp_OUTPUT2 @tblType