Bu eski bir gönderi, ancak "Saklı yordam için çıktı parametresi olarak Tablo Değerli Parametre" aranırken en üste yakındı. Tablo değerli bir parametreyi çıktı parametresi olarak geçiremezsiniz, hedefin tablo değerli çıktı parametresini başka bir prosedürde tablo değerli girdi parametresi olarak kullanmak olduğunu hayal ediyorum. Bu çalışmayı nasıl yaptığım için bir örnek göstereceğim.
İlk önce, çalışmak için bazı veriler oluşturun:
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' )
;
Ardından, verilerin bir kısmını yakalamak için saklı bir prosedür oluşturun. Normalde bu, tablo değerli bir çıktı parametresi oluşturmaya çalıştığınız yer olacaktır.
create procedure usp_OUTPUT1
@gender varchar(10)
as
Begin
select id from tbl1 where gender = @gender
End
Ek olarak, ilk saklı yordamdaki verilerin bir sonraki saklı yordam için girdi parametresi olarak geçirilebileceği bir veri türü (tablo türü) oluşturmak isteyeceksiniz.
create type tblType as Table (id int)
Ardından, tablo değerli parametreyi kabul edecek ikinci saklı yordamı oluşturun.
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
Verilmiş, bu doğru bir tablo değerli çıktı parametresi değildir, ancak muhtemelen aradığınıza benzer sonuçlar üretecektir. Tablo değerli parametrenizi belirtin, içine saklı yordamı uygulayarak verilerle doldurun, sonra bir sonraki yordam için girdi değişkeni olarak kullanın.
Declare @tblType tblType
insert into @tblType execute usp_OUTPUT1 'm'
execute usp_OUTPUT2 @tblType