Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как иммитировать case в запросе в хранимке ? [Oracle]


Страницы:   1 2

ANB ©   (2006-08-24 14:30:00) 

Наступил на оракловую граблю :
Написал и отладил запрос, запихнул его в хранимку - хранимка не компиляется. Ругается на использование case в запросе.
Как бы это обойти ?
Можно, конечно, вытащить все нужные поля и ифом разрулить, но как то некузяво это и полей не мало.


Petr V. Abramov   (2006-08-24 20:38:00) [21]

> decode не пройдет, т.к. условие непростое, логическое.
 да наверняка можно извратиться.
условие - в студию, для разминки мозгов:)


ANB   (2006-08-24 18:11:00) [22]

Млин, так и знал - у нас 8-ка. Придется ифом изгалятся.


Reindeer Moss Eater   (2006-08-24 18:03:00) [23]

Если уж decode не подойдет, то тогда задача нерешаема.
Потому что decode - просто чума.
:)


ANB   (2006-08-24 18:01:00) [24]


> Desdechado ©   (24.08.06 17:34) [6]

decode не пройдет, т.к. условие непростое, логическое. Похоже у нас сервак старый.


Reindeer Moss Eater   (2006-08-24 17:58:00) [25]

В девятке второго релиза и старше кейс доступен и в SQL и в PL/SQL


Desdechado   (2006-08-24 17:34:00) [26]

Посмотри в сторону функции DECODE и COALESCE.
CASE в PL-SQL имеет другой синтаксис, процедурный.


ANB   (2006-08-24 16:52:00) [27]

Ну, это процедурка попроще, тот запрос, в котором мне нужно case иммитировать больно здоровый.


ANB   (2006-08-24 16:51:00) [28]

FUNCTION get_currency_name_decline (p_cur_inner_code VARCHAR2, p_num INTEGER)
     RETURN VARCHAR2
  IS
     v_r   currency.currname%TYPE;
  BEGIN
     SELECT CASE
               WHEN p_num = 1
                  THEN c.currmnem
               ELSE c.currsname
            END
       INTO v_r
       FROM currency c
      WHERE c.currcode = p_cur_inner_code;

     RETURN v_r;
  END;

Ошибка :
PLS-00103: Встретился символ "CASE" в то время как ожидалось одно из следующих:

  ( * - + all mod null <an identifier>
  <a double-quoted delimited-identifier> <a bind variable>
  table avg count


Sergey13   (2006-08-24 15:20:00) [29]

> [2] ANB ©   (24.08.06 15:12)
> Издеваешься ?
Отнють. Почем я знал, что за запрос.

>Ругается на использование case в запросе.
Ошибку опубликуй.


ANB   (2006-08-24 15:12:00) [30]


> Sergey13 ©   (24.08.06 14:38) [1]

Издеваешься ? Тогда уж проще ифом разруливать. Мне циклом по нему пройти нужно. Через for R in () loop - самый удобный способ.


Sergey13   (2006-08-24 14:38:00) [31]

А ты этот запрос через execute_immediate не пробовал выполнить?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо