Задать вопрос
ArtyomovAnton
@ArtyomovAnton
PHP и всё что рядом

Почему с CASE работает, а с IF — нет?

Здравствуйте. Создаю функцию для триггера.
Почему через IF не создается?
CREATE FUNCTION my_trigger_finc() RETURNS trigger AS 
'DECLARE 
    myVar numeric DEFAULT 0;
BEGIN
    myVar     := IF NEW."TYPE_SCHET" = ''d8b24c5b-dd1f-488f-9f75-af7bbc45cb5a'' THEN 1 ELSE 0 END IF;
return NEW;
END;' LANGUAGE  plpgsql;


А вот через CASE норм
CREATE FUNCTION my_trigger_finc() RETURNS trigger AS 
'DECLARE 
    myVar numeric DEFAULT 0;
BEGIN
    myVar     := CASE WHEN NEW."TYPE_SCHET" = ''d8b24c5b-dd1f-488f-9f75-af7bbc45cb5a'' THEN 1 ELSE 0 END;
return NEW;
END;' LANGUAGE  plpgsql;
  • Вопрос задан
  • 191 просмотр
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик расширенный
    14 месяцев
    Далее
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Яндекс Практикум
    Мидл Python-разработчик
    6 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
Rickkk
@Rickkk
Ну вообще в case после then или else нельзя указывать ничего, кроме результата по данному условию -
вот ссылка А в IF, можно писать
какие-либо выражения и операторы. IF не обязательно должен возвращать результат, а CASE обязательно. Поскольку IF неоднозначен, поэтому его вывод нельзя присваивать переменной, как ты это делаешь в 1-м варианте.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы