2016-11-07 108 views
3

我正在關注Patrick LeBlanc編寫的Microsoft SQL Server 2012一書。當我使用書中的示例創建內聯表值函數時,我在本文的標題中遇到了錯誤。我嘗試通過右鍵單擊「函數」 - >「新建」 - >內聯表值函數來創建代碼,然後更改代碼。我還寫了書中的全部代碼。正如我所看到的,我在CREATE FUNCTION語句之前使用了GO語句。代碼看起來像這樣,任何想法是什麼造成這個?'CREATE FUNCTION'必須是批處理中唯一的語句

USE AdventureWorks2016CTP3; 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

CREATE FUNCTION dbo.GetOrderDetails 
(
    @SalesOrderID int 
) 
RETURNS TABLE 
AS 
RETURN 
(
    SELECT 
     sod.SalesOrderID, 
     sod.SalesOrderDetailID, 
     sod.CarrierTrackingNumber 
     p.Name AS ProductName, 
     so.Description 
    FROM Sales.SalesOrderDetail AS sod 
    INNER JOIN Porduction.Product AS p 
     ON sod.ProductID = p.ProductID 
    INNER JOIN Sales.SpecialOffer AS so 
     ON sod.SpecialOfferID = so.SpecialOfferID 
    WHERE 
     sod.SalesOrderID = @SalesOrderID 
) 
GO 
+1

這裏有一個逗號缺少'sod.CarrierTrackingNumber,'除了一切看起來不錯 –

+0

只需突出顯示'CREATE FUNCTION'直到GO在底部,然後執行。 – Eric

回答

4

這看起來幾乎是正確的 -

把一個逗號後

sod.CarrierTrackingNumber 

,改變

INNER JOIN Porduction.Product AS p 

INNER JOIN Production.Product AS p 

(注意「製作」拼寫錯誤)

編輯:格式不正確。

+0

然後只是幾個錯別字。不要以爲SSMS產生的錯誤是非常有用的。 –

相關問題