'CREATE FUNCTION'必须是批次中唯一的声明

时间:2016-11-07 15:58:03

标签: sql-server tsql

我正在关注Patrick LeBlanc撰写的Microsoft SQL Server 2012一书。当我使用本书中的示例创建内联表值函数时,我在本文的标题中得到错误。我尝试通过右键单击“功能” - >来创建代码。新的 - >内联表值函数然后更改代码。我还从书中写了整个代码。我可以看到我在CREATE FUNCTION语句之前有GO语句。 代码看起来像这样,任何想法导致了什么?

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 个答案:

答案 0 :(得分:5)

看起来几乎正确 -

之后加上逗号
sod.CarrierTrackingNumber

并更改

INNER JOIN Porduction.Product AS p

INNER JOIN Production.Product AS p

(注意“生产”拼写错误)

编辑:格式错误。