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

例外ORA-08103:Hibernateのsetfetchsizeを使用する際にオブジェクトが存在しなくなりました

    ON COMMIT DELETE ROWSで作成されたグローバル一時テーブル(GTT)に基づいてカーソルが開かれる可能性があります。 オプション。そして、ORA-08103: object no longer existsの原因 エラーはcommitです deleteの直後に続くステートメント 声明。簡単な例を次に示します。

     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
    

    on commit preserve rowsを使用したグローバル一時テーブルの再作成 句を使用すると、ORA-08103:に直面することを恐れずに、そのテーブルに基づくカーソルからデータを安全にフェッチできます。 エラー。



    1. サブクエリを使用したOracleピボット

    2. エラー:PLS-00428:このselectステートメントでinto句が必要です

    3. カーソル内のPL/SQL変数は、バインドパラメータと実質的に同じですか?

    4. PostgreSQLでのRandom()のしくみ