|
ХП возвращает REF CURSOR -- как обработать?
|
|||
---|---|---|---|
#18+
Хранимая Процедура (точнее -- функция) возвращает REF CURSOR. Внутри другой процедурки с этим курсором нужно поработать, НО -- cur%OPEN -- TRUE, а вот cur%ROWCOUNT = 0! По факту все с теми же параметрами возвращает требуемый набор строк. Как с эти бороться? Есть ли у кого какие мысли? ORACLE 9i (RC2) проверил на 8i (8.1.7) -- те же ... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2002, 18:17 |
|
ХП возвращает REF CURSOR -- как обработать?
|
|||
---|---|---|---|
#18+
а код псомотреть обоих ХП? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2002, 11:50 |
|
ХП возвращает REF CURSOR -- как обработать?
|
|||
---|---|---|---|
#18+
cur%ROWCOUNT в соответствии с документацией, не обязан возвращать действительное число записей. Он может вернуть и тот самый "0", обозначающий "не знаю, я, сколько их там будет, оно ещё делается" :) Поэтому и советуют в таких случаях использовать цикл fetch/not_found. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2002, 03:14 |
|
ХП возвращает REF CURSOR -- как обработать?
|
|||
---|---|---|---|
#18+
Спасибо всем кто потратил время! :) Протупил с докой -- очитался ... :)) Был искренне уверен, что возвращает количество ВЫБРАННЫХ записей -- ан нет! Количество УЖЕ считанных "фетченых" :(( Кстати, а как таки вернуть кол-во выбранных курсором записей? Методов нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2002, 13:15 |
|
ХП возвращает REF CURSOR -- как обработать?
|
|||
---|---|---|---|
#18+
Субъективное мнение -- по логике вещей и быть не должно. То есть, или ты при открытии курсора ждёшь, пока сервер выберет тебе всё (аналог хинта ALL_ROWS), или же довольствуешься предвыборкой (FIRST_ROWS), но не знаешь сколько записей будет. Кстати, а почему бы не возвращать PL_SQL таблицу c ROWID записей? Или процедуря чужая??? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2002, 02:17 |
|
ХП возвращает REF CURSOR -- как обработать?
|
|||
---|---|---|---|
#18+
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 .......................... ? или я таки не допонимаю? .... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2002, 09:24 |
|
ХП возвращает REF CURSOR -- как обработать?
|
|||
---|---|---|---|
#18+
Неа. Не то же самое: PL/SQL table по сути своей линейный динамический массив, который существует только в памяти серверного клиентского процесса. Был доступен по крайней мере с 7.3. Работается с ним только как с массивом: доступ по целочисленному индексу-ключу. А вот Nested table это уже наворот восьмёрки, и их можно хранить в базе. А вот можно ли над ними делать DML надо смотреть документацию, что немного в лень. (Но думаю, что можно.) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2002, 02:00 |
|
|
start [/forum/topic.php?fid=52&fpage=2846&tid=1993290]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
22ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 104ms |
0 / 0 |