自分で直接SQLを書いている人にはあまり発生しない問題だと思うのですが・・・
躓いたので書き残しておきます。
linuxのシェルを使って、検索値をcsvファイルから読み込み、IN句のあるSQLを生成してSQL*Plusを実行したところ、下記のようなエラーメッセージが表示されました。
SP2-0027: 入力が長すぎます(> 2499文字)。この行は無視されました。
SQL*Plusって1行が2500文字以上のSQLは受け付けないんですね。
とういことで、下記の例のように、コマンドはワンライナーで書きつつも発行するSQLには改行を入れてSQL*Plusを実行したところ、無事全体で2500文字以上生成されるSQLを発行することができました。
例)
echo "SELECT * FROM TABLE_A改行WHERE COL_A IS NOT NULL;" | sed 's/改行/\n/g' | sqlplus user/passwd@sid
「改行」の部分は、SQLを自動生成する場合、自動生成箇所で絶対に入りえない文言にしておく必要があります。
以上、SQL*Plusで2500文字以上の値を渡す場合の解決法でした。