Показать сообщение отдельно
Старый 03.09.2003, 05:48   #1  
DSV is offline
DSV
Участник
 
129 / 10 (1) +
Регистрация: 12.06.2003
Адрес: Novocybers
Старая и страшная тема.
Ну нет в оракле селективных процедур, НЕТУ!!!

Можно изворачиваться по способу Андре - складывать результат процедуры во вполне обычную табличку, не забывая привинчивать имя пользователя к каждой строчке. Чтоб каши не было.
Но это метод для ленивых.

А для ОЧЕНЬ-ОЧЕНЬ ленивых есть более прикольный метод.

На оракле выше 8.0 (нужно, чтоб возможность с объектами работать была)
1) создаем объектный тип данных навроде строки.
2) создаем таблица из этих строк.
3) делаем функцию, возвращающей значение типа нашей объектной таблицы. В теле функции наполняем выходной набор записей и
4) вызов функции выглядит как select * from the (select * from <имя функции>)

НО. У данного способа кроме плюсов:
1) не болит голова с изоляцией пользователей и избавлением от результатов предыдущего запуска;
2) работает даже из-под Access-а.

есть и минусы:

1) сложно отлаживать - все приходится делать вслепую.
2) (субъективное) 8.1.6 вел себя гораздо капризней, нежели в случае обычной процедуры PL/SQL - например, NULL вместо ожидаемого значения валил все выполнение.

===================================
А вот по поводу примера - занимался сим извращением последний раз пол-года назад, примеров под рукой нет, но в свое время взял идею с форумов ораклоидов.