2016-06-20 5 views
-2
SELECT CASE 
     WHEN vGlTransType = 'R' THEN tkt_seq_num 
     WHEN vGlTransType in ('A','E','X') then 
     break 
    END 
+2

Почему вы хотите переломить? Что должно случиться ?! – sagi

+0

, когда первый случай не выполняется, я не хочу никакой ценности, я просто хочу выйти из цикла, и согласно мне по умолчанию он принимает значение null, когда первое условие не выполняется. –

+0

Почему бы просто не добавить фильтр 'WHERE vGlTransType не в ('A', 'E', 'X')'? – sagi

ответ

0

нет петли в том случае использования

ELSE нуль

до конца, чтобы вернуть нулевое значение, если другие условия не выполняются

0

Как Алекс уже упоминалось, вы хотите ELSE:

SELECT CASE WHEN vGlTransType = 'R' THEN tkt_seq_num 
      ELSE NULL 
     END 

ELSE NULL по умолчанию btw, это означает, что вы можете просто пропустить его:

SELECT CASE WHEN vGlTransType = 'R' THEN tkt_seq_num 
     END 

У вас много отрицательных ответов, потому что вы используете неправильный словарный запас. Позвольте мне процитировать article I wrote on CASE:

SQL является декларативным языком: он не обеспечивает контроль над потоком программы, как если делает для императивных программ. Тем не менее, SQL имеет нечто подобное: выражение case. Быть выражением - скорее , чем структурой управления - означает, что случай меняет результат формул (выражения) на основе условий. Его использование аналогично тройному оператору ?: На других языках программирования.

Ваш вопрос предполагают, что вы думаете CASE в SQL похож на C-х SWITCH (плюс CASE). Но это не так.

Смежные вопросы