Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Ngoại lệ ORA-08103:đối tượng không còn tồn tại khi sử dụng setfetchsize của Hibernate

Nhiều khả năng con trỏ được mở dựa trên bảng tạm thời chung (GTT), đã được tạo bằng ON COMMIT DELETE ROWS lựa chọn. Và nguyên nhân khiến đối tượng ORA-08103: object no longer exists lỗi là commit câu lệnh theo sau ngay sau delete tuyên bố. Đây là một ví dụ đơn giản:

 SQL> declare
  2    type t_recs is table of number;
  3    l_cur sys_refcursor;    -- our cursor
  4    l_rec t_recs; 
  5  
  6  begin
  7  
  8    -- populating a global temporary table GTT1 with sample data  
  9    insert into GTT1(col)
 10      select level
 11        from dual
 12     connect by level <= 1000;
 13  
 14   open l_cur         -- open a cursor based on data from GTT1
 15    for select col
 16          from GTT1;
 17  
 18    -- here goes delete statement
 19    -- and
 20    commit;  <-- cause of the error. After committing  all data from GTT1 will be
 21              -- deleted and when we try to fetch from the cursor
 22    loop      -- we'll face the ORA-08103 error
 23      fetch l_cur    -- attempt to fetch data which are long gone.
 24       bulk collect into l_rec;
 25      exit when l_cur%notfound;
 26    end loop;
 27  
 28  end;
 29  /


ORA-08103: object no longer exists
ORA-06512: at line 24

Tạo bảng tạm thời toàn cục với on commit preserve rows mệnh đề sẽ cho phép tìm nạp dữ liệu một cách an toàn từ một con trỏ dựa trên bảng đó mà không sợ phải đối mặt với ORA-08103: lỗi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn con Oracle không thấy biến từ khối ngoài 2 cấp trở lên

  2. những gì xảy ra trong giai đoạn áp dụng chuẩn bị

  3. Hàm SOUNDEX () trong Oracle

  4. Cloud Native và DevSecOps ở quy mô lớn với Nền tảng đổi mới nhanh nhẹn Capgemini và Đám mây Oracle

  5. Chọn hàng thứ N từ một bảng trong Oracle