Ini adalah posting yang lebih tua, tetapi berada di dekat bagian atas ketika saya sedang mencari "Parameter Table-Valued sebagai parameter Output untuk prosedur tersimpan". Meskipun menurut pemahaman saya bahwa Anda tidak dapat melewatkan parameter bernilai tabel sebagai parameter output, saya akan membayangkan tujuannya adalah untuk menggunakan parameter output bernilai tabel sebagai parameter input bernilai tabel dalam prosedur lain. Saya akan menunjukkan contoh bagaimana saya membuat ini bekerja.
Pertama, buat beberapa data untuk digunakan:
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' )
;
Selanjutnya, buat prosedur tersimpan untuk mengambil beberapa data. Biasanya, ini akan menjadi tempat Anda mencoba membuat parameter output bernilai tabel.
create procedure usp_OUTPUT1
@gender varchar(10)
as
Begin
select id from tbl1 where gender = @gender
End
Selain itu, Anda akan ingin membuat tipe data (tipe tabel) di mana data dari prosedur tersimpan pertama dapat dilewatkan sebagai parameter input untuk prosedur tersimpan berikutnya.
create type tblType as Table (id int)
Selanjutnya, buat prosedur tersimpan kedua yang akan menerima parameter bernilai tabel.
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
Memang, ini bukan parameter output bernilai tabel yang sebenarnya, tetapi kemungkinan akan menghasilkan hasil yang mirip dengan apa yang Anda cari. Deklarasikan parameter bernilai tabel Anda, isi dengan data dengan menjalankan prosedur yang tersimpan di dalamnya, lalu gunakan sebagai variabel input untuk prosedur selanjutnya.
Declare @tblType tblType
insert into @tblType execute usp_OUTPUT1 'm'
execute usp_OUTPUT2 @tblType