いつもどこかでデスマーチ♪

不定期に、私の日常を書き込みしていきます。

OracleのOUTパラメータって・・・

2011年06月23日 21時15分44秒 | データベース
Oracle10g を使って開発していたのですが、
あるメンバーがPL/SQLの実行結果をOUTパラメータで取得する処理を書きました。

その際「CHAR型」を指定しました。

これが落とし穴です。


完成したので、Javaから呼び出した所、違うところでエラーが…
ま、PL/SQLは通ったし良いかっ!!!と思ったら…


デバッグで実行したところ、String 型のデータが変…
異常に空白が設定されている…なぜ…?


設定場所は…PL/SQLの戻り値だっ!!!!


そうなのです。
PL/SQLの OUT(IN/OUT)パラメータを CHAR型 で設定すると、
3万2千桁?ぐらいのスペースで埋められるのです。

それがそのままJavaに返却され、えらいスペースが設定されるのです。




ちなみに、
PL/SQL内で、OUT (CHAR型)パラメータに 値を設定後、
SQLのINSERT文やUPDATE文 に使用すると、

「ORA-01461: LONG値はLONG列にのみバインドできます。」

と言うエラーが出ます。
TRIM() だろうと、TO_CHAR() だろうと、何をやっても解決できません。

ローカル変数に代入すればOKです。

足からずっ!!!!




教訓:
1.絶対に、PL/SQL の OUT パラメータに CHAR型は使わないっ!
2.OUTパラメータに設定した値を、PL/SQL内で参照しないっ!



環境:
Oracle10g (細かいの知らん)
Windows 2003

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 挫折… | トップ | Webのキー操作は注意が必要で... »

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

データベース」カテゴリの最新記事