• 締切済み

PL/SQLでフェッチでNULLの項目について

PL/SQLで質問があります。 たとえば複数レコードがあり、フェッチで1件ずつ処理する場合、 1件目で値あり、2件目NULLの場合、2件目のフェッチでINTOした変数はNULLが保証されるでしょうか? それとも1件目の値が残ってしまうでしょうか? サンプルでフェッチのループ内で変数の初期化をしない場合でも、NULLで上書きされているようにみえますが、PL/SQLではありませんが以前ProCでNULLの場合は前のレコードの値が残ってしまったため、PL/SQLは上書きが保証されるのかが気になっています(どちらもオラクルなので似た仕様になるのではと懸念)。 グーグル先生に聞いてみましたが、明記されているサイトがみつからず・・・。 ProCはインディケータでNULLを判定するので値の変数にはNULLの場合、何もしないだけでPL/SQLでは特に初期化を気にすることはないのかもしれませんが、仕様として記述されている箇所が見つからないためご存知の方がいらっしゃいましたら教えて頂けると助かります。 具体的には仕事でそういうコーディングになっている箇所があり、直すべきかそのままで問題ないかを検討しています。 現段階ではあまり修正できる状況ではないため、問題にならなければそのままとしたいと考えています。 サンプルの実行結果上は問題なさそうなのですが、できればプラスアルファの情報が欲しく。

みんなの回答

  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.1

こんにちわ。 マニュアルを軽く見てみましたが、明確に記載されている箇所は無さそうです。 Pro*C の場合、C言語にNULL値の概念が無いにも関わらず、NULL値の判断を C言語行えるようにするため、インディケータ変数があるのだと思っています。 PL/SQL の場合変数にNULL の概念があるので、NULL値を読んでくればNULL値 で上書きされます。

_alias_
質問者

お礼

お答え頂いたのに返信できず申し訳ありませんでした。 ありがとうございました。

関連するQ&A