ここで、perl と DBI モジュールで奇妙な問題が発生しています。クエリを正常に取得できる場合もありますが、データベースアクセスなどにリモートで関連するコード行を追加すると、次のようなエラーが発生する場合があります。
DBD::Oracle::st fetchrow_array が失敗しました: エラー 実行中のステートメントはありません (おそらく最初に execute を呼び出す必要があります) [ステートメント "select * from (...)"] の script.pl 18 行目。
私は sqlplus を使用して、ここで select コマンドに問題がないことを確認しました (もちろん、スクリプトが時々機能すると言ったのはそのためです!)
perl スクリプトで select コマンドの後にセミコロンを追加すると、次のような別のエラーが発生しました。
DBD::Oracle::db の準備に失敗しました: ORA-00911: 無効な文字 (DBD エラー: 'select * from (...)<*>;' の char 970 の <*> インジケータの近くでエラーが発生した可能性があります) [for Statement " select * from (...);"] script.pl 13 行目。
ここで何が起こっているのか誰か教えてください。SQLコマンドが長すぎる(〜900文字)ためですか?