![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как иммитировать case в запросе в хранимке ? [Oracle]
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 не пробовал выполнить?