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で質問しましょう!
似たような質問が見つかりました
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- PHP PHP MySql ページング 2 2022/09/20 06:38
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- MySQL 下の画像はSQLの4大命令の性質をまとめたものであるらしいです UPDATE INSERT DELE 1 2023/06/07 15:36
- MySQL 下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 日本の全市区町村を人口密度が低 1 2023/06/18 19:51
- Excel(エクセル) ②Excel 簡単にシートコピーしたら前日の残高と日付を変更させたい→マクロの記録でエラーが出ます 8 2022/07/16 20:40
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Visual Basic(VBA) Excel のユーザー定義関数でソルバーが動作しない 1 2022/09/05 19:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
OracleのSQL*PLUSで、デー...
-
Excelで、改行がある場合の条件...
-
GROUP BYを使ったSELECT文の総...
-
日本語の表名、列名の利用について
-
Excelでセルの書式設定を使用し...
-
ACCESSのコンボボックスの右側...
-
COBOLソースに記述するホスト変...
-
DB2で UNION ALL と GROUP BY ...
-
MS-ACCESS2000で数万件のデータ...
-
主キーに重複があるレコードの...
-
GROUP BYを行った後に結合した...
-
Oracleでの文字列連結サイズの上限
-
Accessで別テーブルの値をフォ...
-
SELECTで1件のみ取得するには?
-
select句副問い合わせ 値の個...
-
SQL文で右から1文字だけ削除す...
-
複数テーブルのMAX値の行データ...
-
ファイル書込みで一行もしくは...
-
SELECTの結果で同一行を複数回...
-
Access を×ボタンで閉じ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
GROUP BYを使ったSELECT文の総...
-
Excelでセルの書式設定を使用し...
-
OracleのSQL*PLUSで、デー...
-
Excelで、改行がある場合の条件...
-
日本語の表名、列名の利用について
-
SQLについて質問です。 AVG関数...
-
SQLについて質問です。 a表があ...
-
主キーに重複があるレコードの...
-
LOAD DATE INFILE で Bit(1)型...
-
ADOのRecordCountプロパティに...
-
MS-ACCESS2000で数万件のデータ...
-
image型のInsertについて
-
NULLのみを保持した列を除外し...
-
ACCESSのコンボボックスの右側...
-
DB2で UNION ALL と GROUP BY ...
-
別のテーブルの値でUPDATEした...
-
COBOLソースに記述するホスト変...
-
SQL 条件下の任意文字出力について
-
cursor.getString
-
エクセル表でA列が表示されな...
おすすめ情報