PHPエラーログを調べると、特定のストアドプロシージャに関連するORA-01858エラーのエントリが頻繁に表示されます。このエラーコードを検索すると、常にTO_CHAR()関数に不正な入力を渡した結果であることがわかります。問題は、問題のストアドプロシージャにはTO_CHAR()関数が1つしかなく、渡す値は実際にはハードコーディングされていることです。(これはNVL(()の2番目のパラメーターです)。コードは次のとおりです。
ROUND(SYSDATE - NVL(PENDING_CLOSE_DT, TO_DATE('2000-01-01','YYYY-MM-DD')), 7) AS PENDING_DURATION
このプロシージャでTO_DATE()を使用するのはこれだけですが、なぜORA-01858エラーが発生するのでしょうか。そのようなエラーを生成できる他のシナリオはありますか?問題の一部は、これがたまにしか起こらないことです。一般に、このストアドプロシージャを使用するプログラムは正常に動作します。これについて私が知っている唯一の理由は、エラーログを確認することです。