У меня есть процедура, с помощью которой я возвращаю курсор.
create or replace procedure pkg_test(cur out sys_refcursor) is
begin
insert into tb_test values(1);
insert into tb_test values(2);
insert into tb_test values(3);
open cur for
select * from tb_test;
delete from tb_test;
commit;
end pkg_test;
Это работает нормально.
Теперь я создал глобальную временную таблицу для некоторых проблем производительности, как показано ниже.
create global temporary table tb_test_GTT (deal_id int)
on commit delete rows;
create or replace procedure pkg_test(cur out sys_refcursor) is
begin
insert into tb_test_GTT values(1);
insert into tb_test_GTT values(2);
insert into tb_test_GTT values(3);
open cur for
select * from tb_test_GTT;
delete from tb_test_GTT;
commit;
end pkg_test;
Теперь, когда я пытаюсь извлечь данные из курсора, я получаю ошибку ниже: -
ORA-08103: object no longer exists.
Я могу исправить эту ошибку, добавив строки сохранения коммита, но я хочуузнать причину.