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

Oracleエラー処理

    通常、ORA-00942エラーはコンパイル時エラーになります。 Oracleは、コンパイル時にテーブルの名前を解決する必要があります。例外ハンドラは、コンパイル時ではなく、実行時にエラーをトラップします。

    動的SQLを使用した場合は、名前の解決をランタイムに延期できます。その時点で、例外をキャッチできます。つまり、

    SQL> ed
    Wrote file afiedt.buf
    
      1  declare
      2    no_such_table exception;
      3    pragma exception_init( no_such_table, -942 );
      4    l_cnt integer;
      5  begin
      6    execute immediate 'select count(*) from emps' into l_cnt;
      7  exception
      8    when no_such_table
      9    then
     10      dbms_output.put_line( 'No such table' );
     11* end;
    SQL> /
    No such table
    
    PL/SQL procedure successfully completed.
    

    しかし、一般に、これはストアドプロシージャを作成するための賢明な方法ではありません。プロシージャは実際に存在するテーブルを認識している必要があり、構文エラーは実行時ではなく開発中に識別および解決する必要があります。



    1. Rails:Herokuへのデプロイ、多くの問題

    2. Oracleの関数を自動シーケンスでコンマ区切りの値に分割

    3. SQL Developerで生の変数長が長すぎるエラーを回避するにはどうすればよいですか?

    4. SQLSERVERのListAGG