ققنوس در ایران
پنج شنبه 13 مرداد 1390, 01:18 صبح
سلام
این عملگر کارش چیه؟؟ کسی می تونه لطف کنه و یه توضیح کامل به من بده ؟؟
Galawij
پنج شنبه 13 مرداد 1390, 10: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
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.