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

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

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

1 - да
2 - нет
3 - да
...
Рейтинг: 0 / 0
08.04.2003, 19:43
    #32136120
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Refcursor и временные таблицы
Вот на уровне запросов я такого эффекта не смог получить, 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
08.04.2003, 19:46
    #32136123
aproximate
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Refcursor и временные таблицы
Именно что на уровне базы все Ок... я этот курсор даже из под SQLNavigatora после выполнения процедуры смотрю, а через ADO не получается
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Refcursor и временные таблицы / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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