ORA-03113: 通信チャネルでファイルが終りになりました。

oraclePL/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の問題と思われる。



動作確認環境:oracle 8.1.7,Windows Server 2000