2016-07-10 32 views
0

私は何百ものユニオンと他の複雑な内部クエリでかなり複雑で長いクエリを実行しています...そして私は得ていますORA-00942: table or view does not exist ....どのテーブルが正確に存在しないのかを知る方法はありますか?ORA-00942:表またはビューが存在しません...詳細を取得できますか?

N.B. :問合せはPL/SQLプロシージャの一部であり、例外は次のように出力されます。DBMS_OUTPUT.PUT_LINE(SUBSTR(SQLERRM, 1, 400));

+0

http://www.techonthenet.com/oracle/errors/ora00942.php – OldProgrammer

+0

感謝:あなたは、EXECUTE IMMEDIATEを使用している、とあなたは便利な変数であなたのSQLを持っている場合は、あなたのコードを持っている何かのように行います実際には私の質問に関する有用な情報を提供していません...もっと冗長なメッセージが必要なだけです –

+0

他の方法があるとは思わない – OldProgrammer

答えて

0

PL/SQLプロシージャがコンパイルされると、直接参照される表が存在する必要があります。私はそれが動的SQLだと思います。 DBMS_SQLを使用している場合は、LAST_ERROR_POSITIONを使用できます。

begin 
    execute immediate v_sql; 
exception 
    when others then 
    declare 
     v_cur BINARY_INTEGER; 
    begin 
     v_cur := dbms_sql.open_cursor; 
     dbms_sql.parse (v_cur, v_sql, dbms_sql.native); 
    exception 
     when others then 
     dbms_output.put_line (sqlerrm || ' near pos ' || 
        substr(v_sql,dbms_sql.last_error_position -10,40)); 
     dbms_sql.close_cursor (v_cur); 
     raise; 
    end; 
end; 
+0

'dbms_sql.last_error_position'は非常に役に立ちます...ありがとう –

関連する問題