Göstermek için birkaç örnek, sadece örtmek:
Satır İçi Tablo Değerli
CREATE FUNCTION MyNS.GetUnshippedOrders()
RETURNS TABLE
AS
RETURN SELECT a.SaleId, a.CustomerID, b.Qty
FROM Sales.Sales a INNER JOIN Sales.SaleDetail b
ON a.SaleId = b.SaleId
INNER JOIN Production.Product c ON b.ProductID = c.ProductID
WHERE a.ShipDate IS NULL
GO
Çoklu Tablo Tablosu Değerli
CREATE FUNCTION MyNS.GetLastShipped(@CustomerID INT)
RETURNS @CustomerOrder TABLE
(SaleOrderID INT NOT NULL,
CustomerID INT NOT NULL,
OrderDate DATETIME NOT NULL,
OrderQty INT NOT NULL)
AS
BEGIN
DECLARE @MaxDate DATETIME
SELECT @MaxDate = MAX(OrderDate)
FROM Sales.SalesOrderHeader
WHERE CustomerID = @CustomerID
INSERT @CustomerOrder
SELECT a.SalesOrderID, a.CustomerID, a.OrderDate, b.OrderQty
FROM Sales.SalesOrderHeader a INNER JOIN Sales.SalesOrderHeader b
ON a.SalesOrderID = b.SalesOrderID
INNER JOIN Production.Product c ON b.ProductID = c.ProductID
WHERE a.OrderDate = @MaxDate
AND a.CustomerID = @CustomerID
RETURN
END
GO
Bir türün (satır içi veya çoklu deyim) diğerine göre kullanılmasının bir avantajı var mı? Biri diğerinden daha iyi olduğunda veya farklılıklar tamamen sözdizimsel olduğunda belirli senaryolar var mı? İki örnek sorgunun farklı şeyler yaptığını anlıyorum, ancak bunları bu şekilde yazmamın bir nedeni var mı?
Onlar hakkında okumalar ve avantajlar / farklılıklar gerçekten açıklanmamıştır.