0

この手順で間違っていること

CREATE PROCEDURE [dbo].[Question_ReadBySort] 
-- Add the parameters for the stored procedure here
(
    @PageNumber int,
    @Gid bigint,
    @Sorttype int,
    @Df int
)
AS
BEGIN
    if @Gid=0
      BEGIN
       With Cust AS 
          (SELECT * ,
           ROW_NUMBER() OVER (order by q_id DESC) as RowNumber 
           from tbl_Question
           where q_del=0)
      END
    ELSE
        BEGIN
        With Cust AS 
           (SELECT * ,
           ROW_NUMBER() OVER (order by q_id DESC) as RowNumber 
           from tbl_Question
           where q_del=1)
        END
END
GO

このエラーは SQL Server で発生します。

メッセージ 156、レベル 15、状態 1、プロシージャ Question_ReadBySort、行 23
キーワード 'END' 付近の構文が正しくありません。

メッセージ 156、レベル 15、状態 1、プロシージャ Question_ReadBySort、行 31
キーワード「END」付近の構文が正しくありません。

4

1 に答える 1

6

CTE 定義の直後には、CTE を使用するステートメントが続く必要があります。たとえば、次のようなもの

WITH Cust
     AS (SELECT *,
                ROW_NUMBER() OVER (ORDER BY q_id DESC) AS RowNumber
         FROM   tbl_Question
         WHERE  q_del = CASE
                          WHEN @Gid = 0 THEN 0
                          ELSE 1
                        END)
SELECT *
FROM   Cust 

異なる CTE 定義を条件付きで定義しIF、後でそれらを使用しようとしているように見えることはできません。

于 2013-05-30T10:17:27.960 に答える