使用CTE时存储过程创建失败

时间:2017-07-11 20:00:49

标签: sql sql-server common-table-expression

运行SQL Server 2008.下面存储过程的每个部分都运行正常。存储过程最初只是插入语句有效。选择/删除的CTE也可以自行运行。

我正在将带有delete语句的CTE添加到存储过程以删除重复项,这样我就可以在开发期间尽可能多地运行,而不会在后续处理中获得重复项。

CREATE PROCEDURE db.sproc_name(@data nvarchar(max))
AS
BEGIN
    DECLARE @doc AS INT
    EXEC sp_xml_preparedocument @doc OUTPUT, @data

    INSERT INTO db.the_table
        SELECT * 
        FROM openxml(@doc, '/XPATH_STRING', 1) 
        WITH db.the_table

    ;WITH cte AS
    (
        SELECT
            *, ROW_NUMBER() OVER (PARTITION BY DATE, CODE ORDER BY DATE) AS rn
        FROM
            db.the_table
    )
    DELETE FROM cte 
    WHERE rn > 1
END

运行create语句时出现此错误:

  

15:51:16 [错误代码...]'the_table'附近的语法不正确。
  15:51:16 [错误代码...]'end'附近的语法不正确。
  ...执行了2个语句,0行受影响,执行/获取时间:     0.005 / 0.000秒[0成功,2错误]

已修改删除标识符中的引号。

0 个答案:

没有答案