sql-server - 消息 319,级别 15,状态 1, "Incorrect syntax near the keyword ' 带有“。”

标签 sql-server tsql

USE [db]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[Get_PageTree]           
(@parentId int)          
AS           
BEGIN  

CREATE TABLE [dbo].[#T_Prime_Page](
    [PageId] [int]  NULL,
    [Flag] [bit] NULL,
    [ParentId] [int]  NULL,
    [RootId] [int] NULL,
    [PageName] [nvarchar](1550) NULL,
    [PageTitle] [nvarchar](1550) NULL,
    [Live] [bit] NULL,
    [FileName] [nvarchar](1550) NULL,
    [UseLink] [bit] NULL,
    [Link] [nvarchar](1500) NULL,
    [Keywords] [ntext] NULL,
    [Description] [ntext] NULL,
    [PageBody] [ntext] NULL,
    [DisplayOrder] [int] NULL,
    [metaTitle] [varchar](1500) NULL,
    [metaDesc] [varchar](5000) NULL)

Insert Into #T_Prime_Page
Select *  From Prime_Page Where Live = 0

Update #T_Prime_Page Set ParentID = null Where Flag = 0

WITH Page_CTE  AS (
SELECT PageID, PageName, PageTitle, FileName, UseLink, Link, Description, ParentId,  DisplayOrder, 0 AS Level
FROM #T_Prime_Page 
WHERE ParentId is null and PageId = @parentId
UNION ALL
SELECT p.PageID, p.PageName, p.PageTitle, p.FileName, p.UseLink, p.Link, p.Description, p.ParentId, p.DisplayOrder, Level + 1
FROM #T_Prime_Page p
INNER JOIN Page_CTE pcte ON pcte.PageId = p.ParentId
)
SELECT * into #t_Page_CTE
FROM Page_CTE Where PageID <> @parentId Order by Level, DisplayOrder

SELECT * 
FROM #t_Page_CTE Where Level = 1 Order by Level, DisplayOrder

SELECT * 
FROM #t_Page_CTE Where Level = 2 Order by Level, DisplayOrder

End

GO

嗨,我收到错误: 消息 319,级别 15,状态 1,过程 Get_PageTree,第 30 行关键字“with”附近的语法不正确。如果此语句是公用表表达式、xmlnamespaces 子句或更改跟踪上下文子句,则前一个语句必须以分号终止。

请帮助创建该过程。提前致谢。

最佳答案

在WITH之前添加分号(;)。

;WITH Page_CTE  AS (

正如错误消息告诉您的那样,前面的语句应该以分号结束。

关于sql-server - 消息 319,级别 15,状态 1, "Incorrect syntax near the keyword ' 带有“。”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17217379/

相关文章:

sql - 这个 SQL 语句背后的含义是什么? ISNULL(状态,0) & 128 = 0?

sql-server - T-SQL是否可以在select语句中使用变量来指定数据库

tsql - 如何将比较结果存储到变量中

c# - 如何在导入数据库之前验证列

c# - 将空值插入到 sql server 中的 int 列

sql - 需要帮助创建 linq 选择

sql - PIVOT SQL 数据和填空

mysql - 如何获得链接到第三个表的两个表的总和

mysql - 使用 Entity Framework 将 MySQL 和 MSSQL 用于两个不同的数据库

sql - 将 2 个日期行合并为 1 行中的 2 列