powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ХП возвращает REF CURSOR -- как обработать?
7 сообщений из 7, страница 1 из 1
ХП возвращает REF CURSOR -- как обработать?
    #32032865
SilVer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хранимая Процедура (точнее -- функция) возвращает REF CURSOR. Внутри другой процедурки с этим курсором нужно поработать, НО -- cur%OPEN -- TRUE, а вот cur%ROWCOUNT = 0! По факту все с теми же параметрами возвращает требуемый набор строк. Как с эти бороться?
Есть ли у кого какие мысли?
ORACLE 9i (RC2)
проверил на 8i (8.1.7) -- те же ...
...
Рейтинг: 0 / 0
ХП возвращает REF CURSOR -- как обработать?
    #32033170
roottim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а код псомотреть обоих ХП?
...
Рейтинг: 0 / 0
ХП возвращает REF CURSOR -- как обработать?
    #32033240
vskv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cur%ROWCOUNT в соответствии с документацией, не обязан возвращать действительное число записей. Он может вернуть и тот самый "0", обозначающий "не знаю, я, сколько их там будет, оно ещё делается" :)
Поэтому и советуют в таких случаях использовать цикл fetch/not_found.
...
Рейтинг: 0 / 0
ХП возвращает REF CURSOR -- как обработать?
    #32033794
SilVer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем кто потратил время! :)
Протупил с докой -- очитался ... :))
Был искренне уверен, что возвращает количество ВЫБРАННЫХ записей -- ан нет! Количество УЖЕ считанных "фетченых" :((
Кстати, а как таки вернуть кол-во выбранных курсором записей? Методов нет?
...
Рейтинг: 0 / 0
ХП возвращает REF CURSOR -- как обработать?
    #32033897
vskv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Субъективное мнение -- по логике вещей и быть не должно.
То есть, или ты при открытии курсора ждёшь, пока сервер выберет тебе всё (аналог хинта ALL_ROWS), или же довольствуешься предвыборкой (FIRST_ROWS), но не знаешь сколько записей будет.
Кстати, а почему бы не возвращать PL_SQL таблицу c ROWID записей? Или процедуря чужая???
...
Рейтинг: 0 / 0
ХП возвращает REF CURSOR -- как обработать?
    #32033920
Silver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PL/SQL Table == Nested Table? Или я еду мимо? :)
А по ним могет быть вариант типа:
( Select Call_SP01 from dual
INTERSECT
Select Call_SP02 from dual
.........
или нужно что-то вроде ..
NT01 := Call_SP01();
NT02 := Call_SP02();
а потом
Select FieldID from NT01
INTERSECT
Select FieldID from NT02
..........................
? или я таки не допонимаю? ....
...
Рейтинг: 0 / 0
ХП возвращает REF CURSOR -- как обработать?
    #32034075
vskv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неа. Не то же самое:
PL/SQL table по сути своей линейный динамический массив, который существует только в памяти серверного клиентского процесса. Был доступен по крайней мере с 7.3. Работается с ним только как с массивом: доступ по целочисленному индексу-ключу.
А вот Nested table это уже наворот восьмёрки, и их можно хранить в базе. А вот можно ли над ними делать DML надо смотреть документацию, что немного в лень. (Но думаю, что можно.)
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ХП возвращает REF CURSOR -- как обработать?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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