А почему в PSQL нет оператора CASE?

Kotъ-Begemotъ
Дата: 20.08.2012 18:24:18
Стандартам это что ли противоречит? Вроде вполне удобная штука, чтобы кучи IF(condition) THEN (...) ELSE не городить... Ы?
Мимопроходящий
Дата: 20.08.2012 18:40:31

а разве таки нету?

Posted via ActualForum NNTP Server 1.5

Kotъ-Begemotъ
Дата: 20.08.2012 18:51:52
Мимопроходящий
а разве таки нету?


Ну, только унутре SELECT, насколько я понимаю... А я немного про другое.
dimitr
Дата: 20.08.2012 18:52:12
не противоречит, насколько я помню. И вроде даже кто-то заносил это в трекер. Но приоритет ниже плинтуса, потому его и нет.
Kotъ-Begemotъ
Дата: 20.08.2012 19:24:11
dimitr
не противоречит, насколько я помню. И вроде даже кто-то заносил это в трекер. Но приоритет ниже плинтуса, потому его и нет.


Понятно, спасибо. Ну, может быть когда-то и будет :-) Я просто "на автомате" нафигачил в ХП здоровый CASE с присвоением значений переменной и долго удивлялся чего это IBE ругается?!? Потом дошло...
Симонов Денис
Дата: 20.08.2012 19:24:12
Он там есть. Только работает как функция.

EXECUTE BLOCK (
    I INTEGER = :IN)
RETURNS (
    OUT INTEGER)
AS
BEGIN
  OUT = CASE I
          WHEN 1
          THEN 2
          WHEN 2
          THEN 3
          WHEN 3
          THEN 8
          ELSE 16
        END;
  SUSPEND;
END
Kotъ-Begemotъ
Дата: 20.08.2012 19:26:25
Симонов Денис
Он там есть. Только работает как функция.

Ух ты! Прикольно, спасибо, записал в блокнотег :-)
__Avenger__
Дата: 20.08.2012 19:42:44
Симонов Денис
Он там есть. Только работает как функция.

EXECUTE BLOCK (
    I INTEGER = :IN)
RETURNS (
    OUT INTEGER)
AS
BEGIN
  OUT = CASE I
          WHEN 1
          THEN 2
          WHEN 2
          THEN 3
          WHEN 3
          THEN 8
          ELSE 16
        END;
  SUSPEND;
END



EXECUTE BLOCK (
    I INTEGER = :IN)
RETURNS (
    OUT INTEGER)
AS
BEGIN
  OUT = DECODE(I, 1, 2, 2, 3, 3, 8, 16);
  SUSPEND;
END
Kotъ-Begemotъ
Дата: 20.08.2012 19:50:11
__Avenger__
EXECUTE BLOCK (
    I INTEGER = :IN)
RETURNS (
    OUT INTEGER)
AS
BEGIN
  OUT = DECODE(I, 1, 2, 2, 3, 3, 8, 16);
  SUSPEND;
END


Спасибо, тоже записал, вдруг пригодится где :-)