oracleでPL/SQLを実行した際に以下のエラーが発生することがある。
ORA-03113: 通信チャネルでファイルが終りになりました。 ORA-03114: Oracleに接続されていません
どうやら、Nullの値に対してTRIM関数を実行した場合に発生する模様。
回避策としてTRIMを使わずにRTRIM関数やReplaceでスペースを置き換えてみるとエラーは発生しない。
再現させるためのSQLは以下の通り
set serveroutput on; DECLARE WK_HENSU CHAR(1); BEGIN WK_HENSU:=''; WK_HENSU:=TRIM(WK_HENSU); DBMS_OUTPUT.PUT_LINE('WK_HENSU = ' || WK_HENSU); END; /
なお、サーバのOracleのバージョンがOracle8iだとこの現象は発生するが
Oracle10gだと発生しなかったのでOracle 8.1.7の問題と思われる。