まったく同じコードがクエリとして完全に実行されますが、ストアド プロシージャを作成しようとすると構文エラーが発生します。私は自分でエラーを見ることができないので、助けていただければ幸いです。
エラーは次のとおりです。
メッセージ 102、レベル 15、状態 1、プロシージャ DataSelect、行 12 'OrderedYTD' 付近の構文が正しくありません。
そして、コードは単純です:
CREATE PROCEDURE DataSelect
(
@TargetPdc int
)
AS
BEGIN
-- Refresh Data Here
EXEC DataUpdate
-- Select Data for Report
WITH OrderedYTD AS
(
SELECT custextract.*, histextract.*,
ROW_NUMBER () OVER (PARTITION BY custextract.custcustno ORDER BY histextract.salesytd desc) AS RowNumber
FROM custextract
INNER JOIN histextract
ON custextract.custcustno = histextract.histcustno
WHERE (custextract.ecall = 'Y')
)
SELECT OrderedYTD.*
FROM OrderedYTD
WHERE RowNumber <= 10 and pdc = @TargetPdc;
END
WITH ステートメント (WHERE 句の変数を除く) で始まるすべてを問題なくクエリとして複数回実行しました。ストアド プロシージャ内で CTE を使用すると、構文上の違いはありますか? ありがとう。