アーシの毎日インプット

毎日1つ以上学習する。学習した内容を公開する。を目標に自分のスキルアップを目指します。

SQL*Plusって1行2500文字以上は受け付けない

スポンサードリンク

自分で直接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文字以上の値を渡す場合の解決法でした。

【アーシの原点】

【頭を鍛える迷路集】


スポンサードリンク