2013-10-24 14 views
36

deyimini kullanarak tablo değerli işlevde geçirin Bana bir tablo döndüren bir tablo değerli dönüş işlevi oluşturdum.parametre deyimi

SELECT * FROM dbo.[StateFixedTaxesCalculation](3020,16,1,1006) 

takip edip onun benim için normal çalışıyorken, şimdi seçkin statment bu fonksiyon çağrısını kullanmak istiyorum, bu yüzden dinamik temelde employeeId olduğunu 16 geçebilir burada benim fonksiyonunun çağrıdır.

Bu işlevin döndürdüğü tabloyla iç birleştirmeyi kullanmaya karar verdim. Bunun gibi

SELECT * FROM Employee as E 
INNER JOIN dbo.[StateFixedTaxesCalculation](3020,16,1,1006) as TC ON TC.EmployeeId=E.EmployeeId 

ama şimdi nasıl ben tek bütün employeeId biri 16 olarak dinamik değer iletebilirsiniz.

cevap

56

kullanım outer/cross apply: Hâlâ TC.EmployeeId = E.EmployeeId göre filtre uygulamak için varsa

select * 
from Employee as E 
    cross apply dbo.[StateFixedTaxesCalculation](3020, E.EmployeeId, 1, 1006) as TC 

, sen alt sorgu ile yapabilirsiniz: Benim için

select * 
from Employee as E 
    cross apply (
     select TT.* 
     from dbo.[StateFixedTaxesCalculation](3020, E.EmployeeId, 1, 1006) as TT 
     where TT.EmployeeId = E.EmployeeId 
    ) as TC 
+0

sayesinde çalışır. Bazı zorluklarım var ama bunları ayrı bir soru olarak gönderiyorum. – rahularyansharma

+3

Saatler aradıktan sonra (çoğunlukla yanlış anahtar kelimeler olabilir), bu soruya geldim. Günümü kurtardı. Teşekkürler –

+0

Bu konuda harika bir iş yapıyorum, çok sık başvurulamıyorum, bu yüzden her zaman bakmak zorundayım :) – jediCouncilor