PDA

View Full Version : اجتناب از فراخوانی غیرضروری تابع



مهدی هادیان2
دوشنبه 02 مرداد 1391, 12:39 عصر
بسم الله الرحمن الرحیم
با سلام
/*Number Of InitialStock*/
SELECT Commodity.CommodityCode,InitialStock.Date,InitialS tock.StoreCode
,Nam AS CommodityName,
dbo.FnCommodityStock(Commodity.CommodityCode,Store Code)AS CommodityStock
FROM InitialStock INNER JOIN Commodity
ON Commodity.CommodityCode=InitialStock.CommodityCode



UNION ALL

/*Number Of Recieve*/
SELECT RecieveDetails.CommodityCode,Recieve.Date,Recieve. StoreCode
,(SELECT Nam
FROM Commodity
WHERE RecieveDetails.CommodityCode=Commodity.CommodityCo de) AS CommodityName
,dbo.FnCommodityStock(CommodityCode,StoreCode)AS CommodityStock
FROM RecieveDetails INNER JOIN
Recieve ON RecieveDetails.RecieveCode = Recieve.RecieveCode

UNION ALL


SELECT FactorDetails.CommodityCode,Factor.Date, Factor.StoreCode
,(SELECT Nam
FROM Commodity
WHERE FactorDetails.CommodityCode=Commodity.CommodityCod e) AS CommodityName
,dbo.FnCommodityStock(CommodityCode,StoreCode)AS CommodityStock
FROM FactorDetails INNER JOIN
Factor ON FactorDetails.FactorCode = Factor.FactorCode


dbo.FnCommodityStock(Commodity.CommodityCode,Store Code)AS CommodityStock تابعی ست که کد کالا و کد انبار را میگیرد و موجودی کالای موردنظر را میدهد.
چه طور میشود در کوئری بالا این تابع را فقط یک بار به ازای هر کالا و انبار فراخوانی کنم؟
با سپاس فراوان و آرزوی قبولی طاعات