Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Возможно ли использовать без вложенных запросов значение из CASE в формуле в коде WHEN / 13 сообщений из 13, страница 1 из 1
16.10.2017, 11:30
    #39536772
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли использовать без вложенных запросов значение из CASE в формуле в коде WHEN
Приветствую!

Такой вопрос: может есть какая-нибудь зарезервированная переменная, которая позволит в коде WHEN использовать значение из CASE'a? Без вложенных запросов ?

Код: plsql
1.
2.
3.
4.
case {формула}
   when 0 then ....
   else [всякие рассчеты с использованием {формула}]
end



т.е. хоросо бы только один раз считать {формула}
...
Рейтинг: 0 / 0
16.10.2017, 11:33
    #39536777
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли использовать без вложенных запросов значение из CASE в формуле в коде WHEN
Кроик Семёнкоторая позволит в коде WHEN использовать значение из CASE'a? Без вложенных запросов ?Нет.
Но для некоторых формул можно воспользоваться nullif-ом.
...
Рейтинг: 0 / 0
16.10.2017, 11:37
    #39536781
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли использовать без вложенных запросов значение из CASE в формуле в коде WHEN
P.S.
под вложенными запросами понимаю что-нибудь такое


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT
   case f_val
      when 0 then ...
      else [всякие рассчеты с использованием f_val]
   end
FROM
   (
      SELECT {формула} as f_val, *
      FROM ...
   )
...
Рейтинг: 0 / 0
16.10.2017, 11:37
    #39536782
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли использовать без вложенных запросов значение из CASE в формуле в коде WHEN
Elic,

жаль. Спасибо
...
Рейтинг: 0 / 0
16.10.2017, 11:41
    #39536786
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли использовать без вложенных запросов значение из CASE в формуле в коде WHEN
А как хорошо было бы, если бы в CASE сразу объявить alias
Надо будет предложить Ларри Эллисону
...
Рейтинг: 0 / 0
16.10.2017, 11:45
    #39536791
Возможно ли использовать без вложенных запросов значение из CASE в формуле в коде WHEN
Кроик Семён,

Или infinity/nan вместо null
Код: plsql
1.
[всякие рассчеты с использованием cast({формула} as binary_double)]
...
Рейтинг: 0 / 0
16.10.2017, 11:47
    #39536792
Возможно ли использовать без вложенных запросов значение из CASE в формуле в коде WHEN
Кроик Семён если бы в CASE сразу объявить alias почему только в case. Давай вешать алиасы на любую часть выражения:
Код: plsql
1.
1 as один + один
...
Рейтинг: 0 / 0
16.10.2017, 12:02
    #39536800
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли использовать без вложенных запросов значение из CASE в формуле в коде WHEN
Кроик СемёнНадо будет предложить Ларри ЭллисонуАга. Каждый кулик хвалит своё болото.
...
Рейтинг: 0 / 0
16.10.2017, 13:09
    #39536837
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли использовать без вложенных запросов значение из CASE в формуле в коде WHEN
OK

хотя если Oracle только 1 раз для каждой строки считает {formula}, то может я зря нервничаю
только SQL-запрос получается раздутым, а на скорости его выполнения это не сказывается...

почему озаботился вообще: у меня в этой {formula} несколько операций с CLOB-полем
...
Рейтинг: 0 / 0
16.10.2017, 13:17
    #39536840
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли использовать без вложенных запросов значение из CASE в формуле в коде WHEN
Кроик Семёнхотя если Oracle только 1 раз для каждой строки считает {formula}Как правило, каждый раз. Даже если "рассчитывать" её в inline view.
Кроик Семёну меня в этой {formula} несколько операций с CLOB-полемПокажи:
Кроик Семён
Код: plsql
1.
всякие рассчеты с использованием
...
Рейтинг: 0 / 0
16.10.2017, 13:26
    #39536845
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли использовать без вложенных запросов значение из CASE в формуле в коде WHEN
{формула}

Код: plsql
1.
   DBMS_LOB.InStr(PACK_MY_UTILS.BlobToClob(BLOB_FIELD),'Text')



учитывая (выше описался), что работаю с BLOB-полем, то кроме DBMS_LOB.InStr использую еще и функцию преобразования BLOB в CLOB из пакета:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
   FUNCTION BlobToClob(Src in blob)
   RETURN clob IS
      Result    clob;

      iLen      integer:=DBMS_LOB.lobmaxsize;
      iSrcOffs  integer:=1;
      iDstOffs  integer:=1;
      iLang     integer:=DBMS_LOB.default_lang_ctx;
      iWarn     integer;
   BEGIN
      -- http://www.angelfire.com/home/jasonvogel/oracle_convert_blob_to_clob.html
      if not((Src is NULL) or (DBMS_LOB.GetLength(Src)=0)) then
         DBMS_LOB.CreateTemporary(Result,true);
         DBMS_LOB.ConvertToClob(Result,Src,iLen,
                                iSrcOffs,iDstOffs,
                                DBMS_LOB.default_csid,iLang,iWarn);
      else
         Result:=null;
      end if;

      return(Result);
   END BlobToClob;
...
Рейтинг: 0 / 0
16.10.2017, 13:27
    #39536848
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли использовать без вложенных запросов значение из CASE в формуле в коде WHEN
Кроик Семён{формула}Покажи то, что просили.
...
Рейтинг: 0 / 0
16.10.2017, 13:30
    #39536850
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли использовать без вложенных запросов значение из CASE в формуле в коде WHEN
P.S.
а [всякие рассчеты с использованием] это

Код: plsql
1.
2.
3.
DBMS_LOB.SubStr{PACK_MY_UTILS.BlobToClob(BLOB_FIELD), 
                10, 
                {формула})
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Возможно ли использовать без вложенных запросов значение из CASE в формуле в коде WHEN / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]