従来型パス・ロードでは、入力レコードがフィールド指定を基に解析され、各データ・フィールドが対応するバインド配列(SQL*Loaderがロードするデータを格納するメモリー内の領域)にコピーされます。バインド配列が一杯の場合(または読み取るデータが残っていない場合)、配列挿入操作が実行されます。
SQL*Loaderでは、バインドの配列に挿入後、LOBフィールドが格納されます。そのため、LOBフィールドの処理にエラーが発生した場合(たとえば、LOBFILEがないなど)、LOBフィールドは空のままになります。配列の挿入の実行後にLOBデータがロードされるため、BEFORE
およびAFTER
行トリガーはLOB列に対して機能しない場合もあります。これは、SQL*Loaderで列にLOBの内容をロードする機会を持つ前にトリガーが起動されるためです。たとえば、LOB列C1
にデータをロードして、BEFORE
行トリガーを使用してそのLOB列の内容を調べ、その結果を基に、他の列C2
にロードされる値を導出するとします。これは、トリガーの起動時にLOBの内容がロードされていないため不可能です。