Старая и страшная тема.
Ну нет в оракле селективных процедур, НЕТУ!!!
Можно изворачиваться по способу Андре - складывать результат процедуры во вполне обычную табличку, не забывая привинчивать имя пользователя к каждой строчке. Чтоб каши не было.
Но это метод для ленивых.
А для ОЧЕНЬ-ОЧЕНЬ ленивых есть более прикольный метод.
На оракле выше 8.0 (нужно, чтоб возможность с объектами работать была)
1) создаем объектный тип данных навроде строки.
2) создаем таблица из этих строк.
3) делаем функцию, возвращающей значение типа нашей объектной таблицы. В теле функции наполняем выходной набор записей и
4) вызов функции выглядит как select * from the (select * from <имя функции>)
НО. У данного способа кроме плюсов:
1) не болит голова с изоляцией пользователей и избавлением от результатов предыдущего запуска;
2) работает даже из-под Access-а.
есть и минусы:
1) сложно отлаживать - все приходится делать вслепую.
2) (субъективное) 8.1.6 вел себя гораздо капризней, нежели в случае обычной процедуры PL/SQL - например, NULL вместо ожидаемого значения валил все выполнение.
===================================
А вот по поводу примера - занимался сим извращением последний раз пол-года назад, примеров под рукой нет, но в свое время взял идею с форумов ораклоидов.
|