Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ХП возвращает REF CURSOR -- как обработать? / 7 сообщений из 7, страница 1 из 1
15.06.2002, 18:17
    #32032865
SilVer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ХП возвращает REF CURSOR -- как обработать?
Хранимая Процедура (точнее -- функция) возвращает REF CURSOR. Внутри другой процедурки с этим курсором нужно поработать, НО -- cur%OPEN -- TRUE, а вот cur%ROWCOUNT = 0! По факту все с теми же параметрами возвращает требуемый набор строк. Как с эти бороться?
Есть ли у кого какие мысли?
ORACLE 9i (RC2)
проверил на 8i (8.1.7) -- те же ...
...
Рейтинг: 0 / 0
19.06.2002, 11:50
    #32033170
roottim
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ХП возвращает REF CURSOR -- как обработать?
а код псомотреть обоих ХП?
...
Рейтинг: 0 / 0
20.06.2002, 03:14
    #32033240
vskv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ХП возвращает REF CURSOR -- как обработать?
cur%ROWCOUNT в соответствии с документацией, не обязан возвращать действительное число записей. Он может вернуть и тот самый "0", обозначающий "не знаю, я, сколько их там будет, оно ещё делается" :)
Поэтому и советуют в таких случаях использовать цикл fetch/not_found.
...
Рейтинг: 0 / 0
25.06.2002, 13:15
    #32033794
SilVer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ХП возвращает REF CURSOR -- как обработать?
Спасибо всем кто потратил время! :)
Протупил с докой -- очитался ... :))
Был искренне уверен, что возвращает количество ВЫБРАННЫХ записей -- ан нет! Количество УЖЕ считанных "фетченых" :((
Кстати, а как таки вернуть кол-во выбранных курсором записей? Методов нет?
...
Рейтинг: 0 / 0
26.06.2002, 02:17
    #32033897
vskv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ХП возвращает REF CURSOR -- как обработать?
Субъективное мнение -- по логике вещей и быть не должно.
То есть, или ты при открытии курсора ждёшь, пока сервер выберет тебе всё (аналог хинта ALL_ROWS), или же довольствуешься предвыборкой (FIRST_ROWS), но не знаешь сколько записей будет.
Кстати, а почему бы не возвращать PL_SQL таблицу c ROWID записей? Или процедуря чужая???
...
Рейтинг: 0 / 0
26.06.2002, 09:24
    #32033920
Silver
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ХП возвращает REF CURSOR -- как обработать?
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
27.06.2002, 02:00
    #32034075
vskv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ХП возвращает REF CURSOR -- как обработать?
Неа. Не то же самое:
PL/SQL table по сути своей линейный динамический массив, который существует только в памяти серверного клиентского процесса. Был доступен по крайней мере с 7.3. Работается с ним только как с массивом: доступ по целочисленному индексу-ключу.
А вот Nested table это уже наворот восьмёрки, и их можно хранить в базе. А вот можно ли над ними делать DML надо смотреть документацию, что немного в лень. (Но думаю, что можно.)
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ХП возвращает REF CURSOR -- как обработать? / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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