非常に大きなクエリがあります。かなり大きいので、ここには投稿しません (順序とグループ化を備えた 6 レベルのネストされたクエリがあります)。クエリには、 を介して渡される 2 つのパラメータがありますPreparedStatement.setString(index, value)
。SQL Developerを介してクエリを実行すると(クエリパラメータを手動で実際の値に置き換える)、クエリは約10秒実行され、約15000
行が返されます。しかし、PreparedStament を使用して Java プログラムで実行しようとすると、変数で失敗しORA-01652(unable to extend temp segment)
ます。Java プログラムから単純なステートメントを使用しようとしましたが、問題なく動作します。また、変数なしで PreparedStatement を使用する場合 ( を使用せずsetString()
、パラメータを手動で指定する場合) も正常に動作します。
したがって、問題は PreparedStatemnt パラメータにあると思われます。
そのパラメーターのメカニズムはどのように機能しますか? 単純なステートメントは正常に機能するのに、準備されたステートメントが失敗するのはなぜですか?