ben bu sorguyu kullanın ama işe yaramazsa:kullanın fonksiyonu
create FUNCTION getUserCreditPayment
(
@resellerCode int,
@userCode int,
@startDate datetime,
@endDate datetime
)
RETURNS TABLE AS
RETURN(
WITH Directories AS
(
CASE
WHEN (@userCode != 0)
THEN
(SELECT *
FROM UserCredit
WHERE userCode = @userCode
AND date >= @startDate AND date < @endDate
UNION ALL
SELECT code, date, price* - 1,
userCode, userCodeDes, customerUserName, type
FROM UserPayment
WHERE userCode = @userCode
AND date >= @startDate AND date < @endDate)
ELSE
(SELECT *
FROM UserCredit
WHERE userCode = @userCode
AND date >= @startDate AND date < @endDate
UNION ALL
SELECT code, date, price* -1,
userCode, userCodeDes, customerUserName, type
FROM UserPayment
WHERE date >= @startDate AND date < @endDate)
END
)
SELECT *
FROM Directories
)
Bu yanıt BEGIN ve END ile "eski" sözdizimini kullanır ve bu nedenle çok kötü performans gösterecektir ... Çok daha iyi performans gösteren "yeni" inkar edilebilen (ad-hoc) sözdizimiyle aynı değere ulaşamadığınız nadir durumlar var! – Shnugo
İpucu için teşekkürler, güncellenmiş, bazı örnekleri de paylaşır mısınız – TheGameiswar
Merhaba, üzgünüm, yeterince açık değildi. "Çoklu-açıklama-fonksiyonu" olarak çok daha iyi performans gösteren "tek beyan-TVF" demek istedim. Naveen Kumars'ın cevabına bak. Sadece 'RETURNS TABLE AS ...' var ve daha sonra "çıplak" bir sorgu takip ediyor. Hayır "INSERT" no "@ değişkeni" hayır IF-ELSE "... – Shnugo