Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да реша ORA-29471 на dbms_sql.open_cursor?

Единствената причина (не мога да видя друга в този момент), поради която вашият код повишава ORA-29471 дали вече сте направили dbms_sql не работи във вашата сесия чрез предоставяне на невалиден ID на курсора:

/* 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 

Опитайте да изпълните този код в новосъздадена сесия .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Параметри на Oracle с IN изявление?

  2. Как мога да вмъкна в BLOB колона от израз за вмъкване в sqldeveloper?

  3. Актуализирайте изявление с вътрешно присъединяване на Oracle

  4. Проверете редовете за монотонно нарастващи стойности

  5. Пуснете таблицата, ако съществува