PDA

View Full Version : سوال: فراخوانی یک تابع دارای خروجی جدول



chaalesh
چهارشنبه 15 اردیبهشت 1389, 16:34 عصر
با سلام
من سعی کردم چیزی برای جستجو کردن بیابم ذهنم یاری نکرد چی سرچ کنم همین باعث شد سوال بپرسم

سوال : من یک تابع نوشتم در sql2000 .
خروجی این تابع table هستش
می خوام در یک Select این تابع را مورد استفاده قرار بدهم تعداد رکوردهایی که این select روی اونها کار می کنه بسیار زیادند
بصورت اولیه به این حالت نوشتم :

select ....,myID,dbo.MyFunction(myID,myDate) from myTable where .....
ولی این کد اجرا نمی شود
برای فراخوانی تابع با خروجی جدول باید به این صورت عمل کنم :

select x,y from dbo.myFunction(12,'1388/01/01')
من می خوام فیلدهای myID و myDate از روی نتایج select بیان برن توی این تابع و خروجی را همراه با مابقی مشاهده کنم
راه حل چیست ؟
join ?
دیتای من زیادند باز هم راه حل join هست ؟

محمد سلیم آبادی
چهارشنبه 15 اردیبهشت 1389, 16:51 عصر
سلام،
اگر عبارت SELECT .... FROM myTable WHERE .... --d یک سطر بر می گردونه می تونید این کار را بکنید:



DECLARE @MyID INTEGER;
DECLARE @MyDate DATETIME;
SELECT @MyID = MyID, @MyDate = MyDate
FROM Mytable
WHERE ....
..... ;

SELECT X, Y FROM dbo.MyFunction (@MyID, @MyDate);

chaalesh
پنج شنبه 16 اردیبهشت 1389, 09:10 صبح
متشکرم
ولی نتیجه select من خیلی بیشتر از یک خطه

محمد سلیم آبادی
پنج شنبه 16 اردیبهشت 1389, 13:38 عصر
ببینید این دقیقا همون چیزی هست که دنبالش هستین؟ البته Cross Apply در SQL 2005 پشتیبانی میشه.


--SQL Server 2005
SELECT D.*
FROM ( select ....
from myTable
where .....
)D1
CROSS APPLY dbo.myFunction(MyID, MyDate)AS D;