ورود

View Full Version : cross apply



ققنوس در ایران
پنج شنبه 13 مرداد 1390, 00:18 صبح
سلام
این عملگر کارش چیه؟؟ کسی می تونه لطف کنه و یه توضیح کامل به من بده ؟؟

Galawij
پنج شنبه 13 مرداد 1390, 09:04 صبح
همانطور که می دونیم توابع با نوع Table-Valued Functions می توانند یک جدول را به عنوان خروجی برگردانند. برای اینکه بتوان در داخل query ها به این جداول مجازی JOIN کرد از CROSS APPLY استفاده می کنیم.مثال:
CREATE FUNCTION dbo.fn_GetTopOrders(@custid AS int, @n AS INT)
RETURNS TABLE
AS
RETURN
SELECT TOP(@n) *
FROM Sales.SalesOrderHeader
WHERE CustomerID = @custid
ORDER BY TotalDue DESC
GO
در بالا تعریف تابع را داشتیم که یک جدول را به عنوان خروجی برمی گرداند حالا برای استفاده از این جدول مجازی:
SELECT C.CustomerID,
O.SalesOrderID,
O.TotalDue
FROM
AdventureWorks.Sales.Customer AS C
CROSS APPLY
AdventureWorks.dbo.fn_GetTopOrders(C.CustomerID, 3) AS O
ORDER BY
CustomerID ASC, TotalDue DESC