Я получаю синтаксическую ошибку при попытке создать хранимую процедуру, хотя точно такой же код отлично работает как запрос. Я сам не вижу ошибку, поэтому любая помощь будет оценена по достоинству.Синтаксическая ошибка SQL Server для хранимой процедуры
Ошибка:
Msg 102, Level 15, State 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
Я запускать все, начиная с оператором С (минус переменной в ИНЕКЕ) как запрос несколько раз без каких-либо проблем. Существует ли синтаксическая разница с использованием CTE внутри хранимой процедуры? Благодарю.
Вы должны объяснить это в other way round: Завершить предыдущий оператор с помощью ';' вместо «добавления» '' 'в CTE. http://sqlblog.com/blogs/aaron_bertrand/archive/2009/09/03/ladies-and-gentlemen-start-your-semi-colons.aspx –
Вот и все! Спасибо за урок. Я должен начать улучшаться с прекращением моих заявлений. –
@a_horse_with_no_name Не говорите Аарону, я никогда не услышу его конца: P – JNK