Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Как использовать результат функции из SELECT в этом же запросе?  [new]
еще вопрос
Guest
SELECT ROUND(100.12) sn FROM dual
Можно какнибуть без вложеного запроса использовать sn в этом же запросе?
Нужно так мне:
SELECT ROUND(100.12) sn, sn*2 FROM dual
14 фев 08, 13:07    [5289887]     Ответить | Цитировать Сообщить модератору
 Re: Как использовать результат функции из SELECT в этом же запросе?  [new]
Дубовая голова
Member [заблокирован]

Откуда: с цепи сорвался
Сообщений: 1821
SELECT ROUND(100.12) sn, ROUND(100.12)*2 sn2 FROM dual
14 фев 08, 13:12    [5289937]     Ответить | Цитировать Сообщить модератору
 Re: Как использовать результат функции из SELECT в этом же запросе?  [new]
еще вопрос
Guest
щитать ROUND(100.12) будет 2 раза или один?
14 фев 08, 13:14    [5289953]     Ответить | Цитировать Сообщить модератору
 Re: Как использовать результат функции из SELECT в этом же запросе?  [new]
ы!
Guest
Один раз будет щитать ROUND(100.12), а второй раз ROUND(100.12)*2
:)
14 фев 08, 13:17    [5289975]     Ответить | Цитировать Сообщить модератору
 Re: Как использовать результат функции из SELECT в этом же запросе?  [new]
еще вопрос
Guest
а второй раз не возьмет уже расчитанный ROUND? заново?
это фигова - функция "тяжелая"
14 фев 08, 13:30    [5290103]     Ответить | Цитировать Сообщить модератору
 Re: Как использовать результат функции из SELECT в этом же запросе?  [new]
Дубовая голова
Member [заблокирован]

Откуда: с цепи сорвался
Сообщений: 1821
еще вопрос
щитать ROUND(100.12) будет 2 раза или один?


SQL functions

автор
Do not confuse SQL functions with user-defined functions written in PL/SQL.
14 фев 08, 13:31    [5290113]     Ответить | Цитировать Сообщить модератору
 Re: Как использовать результат функции из SELECT в этом же запросе?  [new]
stax..
Guest
еще вопрос
SELECT ROUND(100.12) sn FROM dual
Можно какнибуть без вложеного запроса использовать sn в этом же запросе?
Нужно так мне:
SELECT ROUND(100.12) sn, sn*2 FROM dual

в новых версиях если ф-ция детерминистская то мож и не будет вычислять второй раз

зы
в древних два раза
.....
stax
14 фев 08, 13:51    [5290271]     Ответить | Цитировать Сообщить модератору
 Re: Как использовать результат функции из SELECT в этом же запросе?  [new]
Дубовая голова
Member [заблокирован]

Откуда: с цепи сорвался
Сообщений: 1821
stax..
в новых версиях если ф-ция детерминистская .....
stax


Опять особый взгляд на все вокруг ? ;)

Еще раз цитирую документацию:

автор

Do not confuse SQL functions with user-defined functions written in PL/SQL.
14 фев 08, 13:53    [5290301]     Ответить | Цитировать Сообщить модератору
 Re: Как использовать результат функции из SELECT в этом же запросе?  [new]
еще вопрос
Guest
Дубовая, совсем запутался
каюсь - у меня своя написанная на pl/sql
будет 2 раза она выполднятся или раз? :)
14 фев 08, 14:00    [5290374]     Ответить | Цитировать Сообщить модератору
 Re: Как использовать результат функции из SELECT в этом же запросе?  [new]
Дубовая голова
Member [заблокирован]

Откуда: с цепи сорвался
Сообщений: 1821
еще вопрос
Дубовая, совсем запутался
каюсь - у меня своя написанная на pl/sql
будет 2 раза она выполднятся или раз? :)


Значит, у stax волшебный шар ? :)

Встроенные оптимизированы, а user-defined требуют переключения
контекста и ведут себя иначе.

Вкури интересную тему

+

DETERMINISTIC

2 stax - почитай тему, чтобы иллюзий не питать ;)
14 фев 08, 14:18    [5290567]     Ответить | Цитировать Сообщить модератору
 Re: Как использовать результат функции из SELECT в этом же запросе?  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
и вообще - не надо бояться вложенных запросов.
именно они, (вкупе с материализацией) - суть средство от повторного исполнения процедур
14 фев 08, 14:42    [5290815]     Ответить | Цитировать Сообщить модератору
 Re: Как использовать результат функции из SELECT в этом же запросе?  [new]
Stax..
Guest
Дубовая голова
еще вопрос
Дубовая, совсем запутался
каюсь - у меня своя написанная на pl/sql
будет 2 раза она выполднятся или раз? :)


Значит, у stax волшебный шар ? :)

Встроенные оптимизированы, а user-defined требуют переключения
контекста и ведут себя иначе.

Вкури интересную тему

+

DETERMINISTIC

2 stax - почитай тему, чтобы иллюзий не питать ;)


в чем иллюзии?
по сцилке
В 10GR2 они могут пропускать некоторые вызовы функции для одинаковых входов.
......
stax
14 фев 08, 15:20    [5291204]     Ответить | Цитировать Сообщить модератору
 Re: Как использовать результат функции из SELECT в этом же запросе?  [new]
stax..
Guest
еще вопрос
Дубовая, совсем запутался
каюсь - у меня своя написанная на pl/sql
будет 2 раза она выполднятся или раз? :)

в общем случае два раза
но гарантіровать скоко раз нельзя (внутрення кухня оракля, умом не понять)

если ф-ция тяжелая прячте в подзапрос

імхо
во вхере может выполнятся даже больше чем строк в таблице
напр
select * from (
select * from dual union all
select * from dual
order by 1)
where f(dummy)>0
/
ф может выполнится больше двух раз
.....
stax
14 фев 08, 15:29    [5291291]     Ответить | Цитировать Сообщить модератору
 Re: Как использовать результат функции из SELECT в этом же запросе?  [new]
Ionah
Member

Откуда: Новосибирск
Сообщений: 290
select sn, sn*2 from (
  select round(100.12) as sn from dual
)
14 фев 08, 18:28    [5292798]     Ответить | Цитировать Сообщить модератору
 Re: Как использовать результат функции из SELECT в этом же запросе?  [new]
еще вопрос
Guest
две функции funk1 и funk2, есть запрос:
select funk1(t.id) res1, funk2(t.id, funk1(t.id) ) res2 from tabl t
Подскажите, как лучше/оптимальнее получать res2 из вышеприведенного селекта:
funk1 передавать в funk2 в качестве параметра (как сейчас),
или же реализовать funk1 внутри функции funk2?
15 фев 08, 12:04    [5293919]     Ответить | Цитировать Сообщить модератору
 Re: Как использовать результат функции из SELECT в этом же запросе?  [new]
Madness
Member

Откуда: Москва
Сообщений: 648
еще вопрос
Подскажите, как лучше/оптимальнее

Оптимальнее - без функций.
В остальном тебе уже ответили, причем в этом же топике.
15 фев 08, 12:08    [5293950]     Ответить | Цитировать Сообщить модератору
 Re: Как использовать результат функции из SELECT в этом же запросе?  [new]
stax..
Guest
еще вопрос
две функции funk1 и funk2, есть запрос:
select funk1(t.id) res1, funk2(t.id, funk1(t.id) ) res2 from tabl t
Подскажите, как лучше/оптимальнее получать res2 из вышеприведенного селекта:
funk1 передавать в funk2 в качестве параметра (как сейчас),
или же реализовать funk1 внутри функции funk2?

select res1, funk2(res1) res2 
from (
  select funk1(t.id) res1 
  from tabl t where rownum<987654321) tt
*-если Вы фетчите почти все записи

.....
stax
15 фев 08, 12:11    [5293975]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить