
COBOLソースに記述するホスト変数を使用したSELECT INSERT分に関する質問です。
COBOLのソースに下記のようなSQL分を記述した際、どのような制御でホスト変数にはどのような値が代入されるのでしょうか?
SELECT MAX(columnA) INTO :H1010:H2020 FROM A_TABLE WHERE …(以下抽出条件)
※H1010及びH2020はホスト変数定義しているものとします。
SELECTを行った項目数とINTO句にて指定した変数の数が異なる場合、エラーとなる記憶があります。
また、複数のホスト変数を使用する場合、カンマ区切りが必要だった記憶もあります。
実際に実行したところ、エラー等無く実行されました。結果を見るとH1010には値が代入され、H2020は初期値のままでした。
どのような制御でこの結果になっているのでしょうか?
参考までに、DBMSは「symfoware」です。
もしご存知の方がいらっしゃいましたら、ご教授頂けると助かります。よろしくお願いします。
No.2ベストアンサー
- 回答日時:
一個の列の設定や受け取りで、
:値の受け取り変数[:標識変数]
といった書き方をします。
標識変数は、列の値が「null」なのか「nullでない有効な値」なのかを判別するために使います。
標識変数が負であれば、受け渡しをしようとした列値がnullという意味になります。この場合、列値の受け渡し変数の値は、保証されません。
標識変数の値が0であったり、正の数値なら、nullでない有効な列値が返されているという意味になります。
標識変数の値の具体的な意味については、お使いのRDBMS、コンパイラのマニュアルを参照してください。
標識変数ですか。
初めて聞く単語なのでちょっと戸惑いましたが、丁寧なご説明ありがとうございます。
勉強不足で申し訳ないです。
助かりました。ありがとうございます。
No.1
- 回答日時:
:H1010:H2020と記述した場合には、値があればH1010に入って、H2020は正の整数が設定されます。
値がNULLの場合にはH1010は元の値のままで、H2020に負の整数が設定されます。
ですから、SELECT後には、最初にH2020を判定して、正の整数ならH1010の値を利用します。
H2020が負の場合には、H1010に値がない場合の処理をします。
なるほど。後ろに記述した変数にはSELECT結果がNULLかどうかの判断結果が代入されるのですね。
直前でイニシャライズしていたので気付きませんでした。
分り易いご説明ありがとうございます。助かりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
OracleのSQL*PLUSで、デー...
-
Excelでセルの書式設定を使用し...
-
GROUP BYを使ったSELECT文の総...
-
Excelで、改行がある場合の条件...
-
ADO VBA 実行時エラー3021
-
Oracleでの文字列連結サイズの上限
-
GROUP BYを行った後に結合した...
-
select句副問い合わせ 値の個...
-
ACCESSの集計クエリで3件ある...
-
使うべきでない文字。
-
Accessで別テーブルの値をフォ...
-
postgresql DELETE後commit...
-
割合(パーセント)を求めるに...
-
沿線コード
-
MERGE文を単体テーブルに対して...
-
抽出したデータを修正して元の...
-
固定値を含む結合と複数テーブ...
-
集計後の数値が倍になる
-
SQLで複数の条件がある場合
-
データセットのレコード更新が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
OracleのSQL*PLUSで、デー...
-
決定性有限オートマトン
-
Excelでセルの書式設定を使用し...
-
Excelで、改行がある場合の条件...
-
日本語の表名、列名の利用について
-
GROUP BYを使ったSELECT文の総...
-
C列からH列の範囲を昇順にてソ...
-
SQLについて質問です。 AVG関数...
-
ADOのRecordCountプロパティに...
-
SQL 条件下の任意文字出力について
-
主キーに重複があるレコードの...
-
ACCESSのコンボボックスの右側...
-
COBOLソースに記述するホスト変...
-
SELECT文で列名指定して桁あわ...
-
oracle12c ユーザのパスワー...
-
NULLのみを保持した列を除外し...
-
Oracleでの文字列連結サイズの上限
-
GROUP BYを行った後に結合した...
-
ADO VBA 実行時エラー3021
-
Accessで別テーブルの値をフォ...
おすすめ情報