sql >> データベース >  >> RDS >> Oracle

dbms_sql.open_cursorでORA-29471を解決する方法は?

    あなたのコードが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. vbaスクリプトの実行中に不特定のランタイムエラーが発生しました

    2. MySQLからExcelファイルを作成する

    3. MySQLで大文字と小文字を区別するように

    4. SQLでのクロス結合と内部結合