2015-08-14 2 views
1

У меня есть хранимая процедура, которая принимает четыре параметра. Я хочу называть его внутри другого скрипта, но когда я это делаю, я еще не разработал именно то, что хочу передать. Я пытаюсь сделать это inline для хранимой процедуры. Так что моя линия выглядит следующим образом:Можете ли вы использовать оператор CASE для оценки параметра, который вы передаете в хранимую процедуру?

EXEC stored_procedure 
    @firstparam, 
    @secondparam, 
    CASE @thirdparam 
     WHEN null THEN 0 
     ELSE 1 
    END, 
    CASE @fourthparam 
     WHEN null THEN 0 
     ELSE 1 
    END 

, но я получаю очень неоднозначное ошибку «неверный синтаксис» вблизи следующих частей:

  • Первый случай
  • Первая 1
  • Первый , (The, сразу после первого CASE END и до второго CASE)
  • Второй 1

Я просто хочу иметь возможность выполнить оператор CASE, чтобы передать правильную переменную в зависимости от того, что такое третий и четвертый параметры.

ответ

5

Вам нужны переменные. Оператор exec не оценивает выражения для аргументов:

DECLARE @p3flag int = (CASE WHEN @thirdparam IS NULL THEN 0 ELSE 1 END); 
DECLARE @p4flag int = (CASE WHEN @fourthparam IS NULL THEN 0 ELSE 1 END); 

EXEC stored_procedure @firstparam, @secondparam, @p3flag, @p4flag; 
Смежные вопросы