powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Refcursor и временные таблицы
6 сообщений из 6, страница 1 из 1
Refcursor и временные таблицы
    #32136061
aproximate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как вытянуть refcursor в ORACLE с временной таблицы? Если делать через SQLCommand то получаем пустой рекордсет у которого EOF и BOF = True но State = 1
...
Рейтинг: 0 / 0
Refcursor и временные таблицы
    #32136094
acidbaba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть такая особенность.
Если ты затягиваешь данные из временной таблицы в ref cursor, затем
commit, то ref cursor будет пустой.
...
Рейтинг: 0 / 0
Refcursor и временные таблицы
    #32136096
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что такое SQLCommand? А так, если пальцем в небо, то три вопроса:

- выборка данных делается в той же сессии, что и заполнение?
- если да, то говорится ли commit перед выборкой?
- если да, то создана ли временная таблица с опцией ON COMMIT PRESERVE ROWS?
...
Рейтинг: 0 / 0
Refcursor и временные таблицы
    #32136105
aproximate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SQLCommand - ADO объект для выполнения SQL комманд, в основном процедур

- выборка данных делается в той же сессии, что и заполнение?
- если да, то говорится ли commit перед выборкой?
- если да, то создана ли временная таблица с опцией ON COMMIT PRESERVE ROWS?

1 - да
2 - нет
3 - да
...
Рейтинг: 0 / 0
Refcursor и временные таблицы
    #32136120
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот на уровне запросов я такого эффекта не смог получить, Oracle EE 8.1.7.4:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
create global temporary table test (
  test_id number ( 9 )
) on commit preserve rows
/

insert into test
select rownum from all_objects where rownum <= 100 ;
commit;
/

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
SQL> set serveroutput on
SQL>  exec dbms_output.enable( 20000 );

PL/SQL procedure successfully completed.

SQL> select count(*) from test;

  COUNT(*)
 ----------
 
        100 

SQL> declare type t_refcursor is ref cursor;
   2           cr t_refcursor;
   3           v number( 9 );
   4           c number( 9 ) :=  0 ;
   5           procedure get_cr (p_cr out t_refcursor) is
   6           begin
   7             open p_cr for
   8               select test_id from test;
   9           end;
  10   begin
  11     get_cr(cr);
  12     commit;
  13     loop
  14       fetch cr into v; exit when cr%notfound;
  15       c := c +  1 ;
  16     end loop;
  17     dbms_output.put_line('count='||c||';');
  18   end;
  19   /
count= 100 ;


Или на уровне базы все в порядке?
...
Рейтинг: 0 / 0
Refcursor и временные таблицы
    #32136123
aproximate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Именно что на уровне базы все Ок... я этот курсор даже из под SQLNavigatora после выполнения процедуры смотрю, а через ADO не получается
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Refcursor и временные таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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