Một vài ví dụ để hiển thị, chỉ cần incase:
Bảng nội tuyến có giá trị
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
Bảng đa báo cáo có giá trị
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
Có một lợi thế để sử dụng một loại (câu lệnh in-line hoặc multi) so với loại kia không? Có những kịch bản nhất định khi cái này tốt hơn cái kia hay sự khác biệt hoàn toàn là cú pháp? Tôi nhận ra hai truy vấn mẫu đang làm những việc khác nhau nhưng có lý do gì tôi sẽ viết chúng theo cách đó không?
Đọc về họ và những lợi thế / khác biệt chưa thực sự được giải thích.