5
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 句、または変更追跡コンテキスト句である場合、前のステートメントはセミコロンで終了する必要があります。

手順の作成にご協力ください。よろしくお願いします。

4

2 に答える 2

16

WITH の直前にセミコロン (;) を付けます。

;WITH Page_CTE  AS (

エラー メッセージが示すように、前のステートメントはセミコロンで終了する必要があります。

于 2013-06-20T15:17:03.273 に答える
2

WITHまた、2005 年以降の新しいコマンド キーワードはすべて、それらと以前のコマンドの間にセミコロン (";") が必要です。したがって、その前WITHUPDATEコマンドの前後に 1 つ追加するだけです。

于 2013-06-20T15:16:50.707 に答える