Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 REF CURSOR в области FROM  [new]
vladik_k
Member

Откуда:
Сообщений: 60
Подскажите,
можно ли каким-то образом засунуть REF CURSOR в область FROM, т.е. написать запрос основанный на курсоре?

Почему я так извращаюсь? Ответ: Есть запрос с параметрами - засуну его в курсор. Потом, есть куча разных запросов, надстроек над предыдущим, т.е. предыдущий запрос - ядро. И мне не хочется повторять его в каждом запросе.

Загнать этот "ядреный" :) запрос в коллекцию, а потом использовать ее в области FROM запросов-надстроек - уже прошел этот этап! Интересно, можно ли реализовать это через сылку на курсор! У меня ничего не получилось. А у Вас? Это наверное невозможно!

Прошу еще заглянуть в мой предыдущий вопрос, задал его сегодня, толковый ответ пока не получил, спасибо!
20 сен 06, 11:44    [3160032]     Ответить | Цитировать Сообщить модератору
 Re: REF CURSOR в области FROM  [new]
Q u a d r o
Member

Откуда: Canada
Сообщений: 1987
vladik_k
Потом, есть куча разных запросов, надстроек над предыдущим, т.е. предыдущий запрос - ядро. И мне не хочется повторять его в каждом запросе.

Оформите этот запрос-ядро как view? (параметрами при этом могут выступать переменные контекста, например).
20 сен 06, 11:58    [3160194]     Ответить | Цитировать Сообщить модератору
 Re: REF CURSOR в области FROM  [new]
mcureenab
Member

Откуда: Murmansk
Сообщений: 5928
Для преобразования ref cursor (и вообще чего угодно) в форму пригодную для использования в SQL запросах существуют конвейерные (pipeline) функции.
Почитай в доке по PL/SQL что это такое.

Спрятать этот хитрый запрос в представление, более здравая мысль.

Наконец, нужно смириться с тем, что SQL как декларативный язык плохо поддаётся функциональной декомпозиции, такой привычной для алгоритмических языков. Зачастую такая декомпозиция приводит к неэффективным планам выполнения запросов. Чаще всего, каждый запрос приходится писать с 0, представления затачивать под решение узкого круга задач.
ИМХО, перспективный путь - использовать для генерации SQL запросов с повторяющимися фрагментами шаблоны. В SQL*Plus и Oracle Reports для этих целей можно использовать переменные подстановки (&var.).
20 сен 06, 12:46    [3160681]     Ответить | Цитировать Сообщить модератору
 Re: REF CURSOR в области FROM  [new]
softy
Member

Откуда: from Russia
Сообщений: 5911
vladik_k

Загнать этот "ядреный" :) запрос в коллекцию, а потом использовать ее в области FROM запросов-надстроек - уже прошел этот этап! Интересно, можно ли реализовать это через сылку на курсор! У меня ничего не получилось.


Никакой памяти не хватит, если всё загонять в коллекции. Создай временную таблицу на основе "ядерного" запроса, индексы нужные и делай из неё запросы.
20 сен 06, 13:01    [3160821]     Ответить | Цитировать Сообщить модератору
 Re: REF CURSOR в области FROM  [new]
contr
Member

Откуда:
Сообщений: 1909
softbuilder@inbox.ru
Никакой памяти не хватит, если всё загонять в коллекции.
Ключевое слово - pipelined - уже называлось.
softbuilder@inbox.ru
Создай временную таблицу на основе "ядерного" запроса, индексы нужные и делай из неё запросы.

Звучит как околовелосипедостроительное предприятие - есть шанс, что можно обойтись mat.view.
20 сен 06, 13:05    [3160857]     Ответить | Цитировать Сообщить модератору
 Re: REF CURSOR в области FROM  [new]
softy
Member

Откуда: from Russia
Сообщений: 5911
contr

Звучит как околовелосипедостроительное предприятие - есть шанс, что можно обойтись mat.view.


Если бы я имел ввиду мат. вью - я так бы и сказал, но я сказал про временные таблицы, что совсем не одно и тоже что мат.вью.
20 сен 06, 13:10    [3160914]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить