前回の年越しの瞬間、何してた?

PL/SQLで質問があります。

たとえば複数レコードがあり、フェッチで1件ずつ処理する場合、
1件目で値あり、2件目NULLの場合、2件目のフェッチでINTOした変数はNULLが保証されるでしょうか? それとも1件目の値が残ってしまうでしょうか?

サンプルでフェッチのループ内で変数の初期化をしない場合でも、NULLで上書きされているようにみえますが、PL/SQLではありませんが以前ProCでNULLの場合は前のレコードの値が残ってしまったため、PL/SQLは上書きが保証されるのかが気になっています(どちらもオラクルなので似た仕様になるのではと懸念)。

グーグル先生に聞いてみましたが、明記されているサイトがみつからず・・・。

ProCはインディケータでNULLを判定するので値の変数にはNULLの場合、何もしないだけでPL/SQLでは特に初期化を気にすることはないのかもしれませんが、仕様として記述されている箇所が見つからないためご存知の方がいらっしゃいましたら教えて頂けると助かります。

具体的には仕事でそういうコーディングになっている箇所があり、直すべきかそのままで問題ないかを検討しています。
現段階ではあまり修正できる状況ではないため、問題にならなければそのままとしたいと考えています。
サンプルの実行結果上は問題なさそうなのですが、できればプラスアルファの情報が欲しく。

A 回答 (1件)

こんにちわ。



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

PL/SQL の場合変数にNULL の概念があるので、NULL値を読んでくればNULL値
で上書きされます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


おすすめ情報