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

Làm thế nào để giải quyết ORA-29471 trên dbms_sql.open_cursor?

Lý do duy nhất (không thể nhìn thấy lý do khác tại thời điểm này) khiến mã của bạn tăng ORA-29471 bạn đã làm dbms_sql chưa không thể hoạt động trong phiên của bạn bằng cách cung cấp ID con trỏ không hợp lệ:

/* dbsm_sql detects invalid cursor ID in this session  */ 
SQL> declare
  2    c_1 number := 5;  -- invalid cursor ID. There is no cursor 
  3    l_res boolean;    -- opened with ID = 5     
  4  begin
  5    l_res := dbms_sql.is_open(c_1);
  6  end;
  7  /
declare
*
ERROR at line 1:
ORA-29471: DBMS_SQL access denied 
ORA-06512: at "SYS.DBMS_SQL", line 1104 
ORA-06512: at line 5 


/* An attempt to execute this simple anonymous PL/SQL block after 
   an invalid cursor ID has already been detected by the dbms_sql 
   in the current session will lead to ORA-29471 error  
*/

SQL> declare
  2    c_2 number;
  3  begin
  4    c_2 := dbms_sql.open_cursor();
  5  end;
  6  /
declare
*
ERROR at line 1:
ORA-29471: DBMS_SQL access denied 
ORA-06512: at "SYS.DBMS_SQL", line 1084 
ORA-06512: at line 4 

Cố gắng thực thi mã đó trong phiên mới được thiết lập .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thực thi câu lệnh hay chạy tập lệnh?

  2. ORA-00942:bảng hoặc dạng xem không tồn tại (hoạt động khi một sql riêng biệt, nhưng không hoạt động bên trong một hàm oracle)

  3. Tìm hiểu ký hiệu tiền tệ mà phiên của bạn sử dụng trong Oracle

  4. MySQL thay thế cho hàm NEXT_DAY của Oracle là gì?

  5. Chuyển quy trình đã lưu trữ từ SQL Server đến máy chủ được liên kết ORACLE