У меня есть хранимая процедура, которая дает мне неожиданный токен;ЗАКАЖИТЕ, ожидая точку с запятой, когда у меня есть это утверждение в конце, когда я пытаюсь выполнить его.
выберите год из #temp, где год не равен ORDER BY year DESC;
, если я удалю ORDER BY year DESC; процедуруработает правильно.
Я пытался всеми возможными способами отсортировать полученную таблицу в порядке убывания.Я довольно новичок в SQL, поэтому я уверен, что это что-то простое.TIA.
// --------- полная хранимая процедура ------ //
ALTER PROCEDURE GetYearForExhaustCatalog
(
CatCodeString Memo,
Year CHAR ( 4 ) OUTPUT
)
BEGIN
/*
EXECUTE PROCEDURE GetYearForExhaustCatalog('(e.catalogcode= ''2182'')');
EXECUTE PROCEDURE GetYearForExhaustCatalog('');
*/
DECLARE @CatCodeString string;
DECLARE @SQL string;
@CatCodeString = (SELECT CatCodeString FROM __input);
if @CatCodeString IS NULL or @CatCodeString = '' then
select e2.year,
(SELECT top 1 e2.year
FROM eenginecatalog e LEFT JOIN exhaustengine e2 ON e2.app_no=e.app_no)
as year
into #temp
from Exhaustengine e2;
select year from #temp where year is not null
GROUP BY year
ORDER BY year DESC;
else
@SQL =
'select e2.year, '+
'(SELECT top 1 e2.year '+
'FROM eenginecatalog e LEFT JOIN exhaustengine e2 ON e2.app_no=e.app_no and '+
@CatCodeString +' ) '+
'as year '+
'into #temp '+
'from Exhaustengine e2; '+
'select year from #temp where year is not null '+
'GROUP BY year '+
'ORDER BY year DESC ';
execute immediate @SQL;
end;
insert into __output
select year from #temp where year is not null ORDER BY year;
drop table #temp;
END;