В моем sql-запросе я хочу использовать последовательность внутри оператора CASE. Проблема в том, что я не могу использовать NEXT VALUE FOR внутри CASE. Я пытался определить пользовательскую функцию, но ограничения на использование exec и изменение данных в UDF сделали мое решение бесполезным...
Вот мой тестовый код:
create sequence temp_test start with 1
select
'value1',
'value2',
case when(1=1)
then next value for temp_test
else (select current_value from sys.sequences where name='temp_test')
end
drop sequence temp_test
Все, что мне нужно, это увеличить переменную, если условие истинно, и вернуть ее. Есть идеи?
Точная ошибка
Функцию NEXT VALUE FOR нельзя использовать в CASE, CHOOSE, COALESCE, IIF, ISNULL и NULLIF.
create sequence temp_test starts with 1;
, я получаюIncorrect syntax near 'starts'.
. Пожалуйста, исправьте этот фрагмент вашего кода. Я также добавил сообщение об ошибке (пожалуйста, сделайте это в будущем). Что вы пытаетесь сделать? - person Nick.McDermaid   schedule 22.03.2017else temp_test
недействителен. Вы пытаетесь получить текущее значение? - person Nick.McDermaid   schedule 22.03.2017