• 検索結果がありません。

SQL 文の指定位置および指定順序

ドキュメント内 アプリケーション開発ガイド (埋込みSQL編) (ページ 116-119)

第3章 アプリケーションの作成

3.2 SQL埋込みCOBOLプログラムの作成方法

3.2.2 SQL 文の指定位置および指定順序

アプリケーション中に埋め込んで使用するSQL文には、実行文と非実行文があります。実行文は、データベースをアクセ スしたり、トランザクションの制御を行うために使用します。非実行文は、実行文で利用するカーソルの宣言やホスト変数 の宣言、例外条件発生時の動作を定義します。非実行文は、アプリケーションの実行対象にはなりません。したがって、

アプリケーション中のGOTO文などによる制御の影響を受けません。

なお、SQL文は、サーバのOS環境で使用できる範囲が異なります。SQL文の使用範囲については、“付録J SQL文の使 用範囲”を参照してください。

SQL文の一覧を以下に示します。

表3.2 SQL文

分類 SQL文 備考

非カーソル系データ操作

単一行SELECT文

実行文 UPDATE文:探索

INSERT文 DELETE文:探索

カーソル系データ操作

カーソル宣言(DECLARE

CURSOR) 非実行文

OPEN文

実行文 CLOSE文

FETCH文

UPDATE文:位置づけ DELETE文:位置づけ

動的SQL文

ALLOCATE DESCRIPTOR文

実行文 DEALLOCATE

DESCRIPTOR文 DESCRIPTOR取得文

DESCRIPTOR設定文

PREPARE文

分類 SQL文 備考 DEALLOCATE PREPARE文

DESCRIBE文 EXECUTE文

EXECUTE IMMEDIATE文

動的カーソル宣言 非実行文 動的OPEN文

実行文 動的FETCH文

動的CLOSE文

動的DELETE文:位置づけ 動的UPDATE文:位置づけ

ストアドプロシジャ CALL文 実行文

トランザクション制御文

COMMIT文 ROLLBACK文 実行文 SET TRANSACTION文

コネクション管理文

CONNECT文

SET CONNECTION文 実行文 DISCONNECT文

セション管理文

SET CATALOG文 SET SCHEMA文 実行文 SET SESSION AUTHORIZATION文

表宣言 表宣言 非実行文

埋込み例外宣言 WHENEVER文 非実行文

埋込みSQL宣言節 BEGIN DECLARE SECTION

非実行文 END DECLARE SECTION

資源操作文 RELEASE TABLE文 実行文 利用者制御文 SET USER PASSWORD文 実行文 アクセス制御文 SET ROLE文 実行文 SQL埋込みCOBOLプログラムでの、SQL文の指定位置について説明します。

埋込みSQL宣言節の指定位置

埋込みSQL宣言節は、ホスト変数を定義するためのものです。埋込みSQL宣言節は、DATA DIVISIONの作業場所節 (WORKING-STORAGE SECTION)またはLINKAGE SECTIONに記述します。また、ホスト変数の変数名は、COBOL プログラムソース上で、“SQL”以外で始まる名前で命令し、一意にする必要があります。

ホスト変数の宣言

ホスト変数は、アプリケーションとデータベースの間でデータの受渡しをするのに使用する変数です。すなわち、アプ リケーションで参照するデータをデータベースから取り出すため、または逆に、アプリケーションで設定したデータを データベースに格納するために、SQL文に指定する変数です。

ホスト変数の宣言は、埋込みSQL宣言節で行います。宣言の記述方法そのものは、COBOLでの変数の宣言と同じ です。ホスト変数の宣言の例を以下に示します。

図3.5 ホスト変数宣言の例(SQL埋込みCOBOLプログラム)

状態変数の宣言

状態変数は、処理結果の状態をアプリケーションに伝えるための変数です。状態変数には状態コードが設定されま す。状態コードは、処理が正常に完了した、または処理中になんらかの例外条件が発生したという状態を表します。

状態変数の変数名は“SQLSTATE”です。

SQLSTATEは長さ5桁の文字列型(01 SQLSTATE PIC X(5))の変数であり、埋込みSQL宣言節で宣言します。埋込み SQLを使用するアプリケーション中では、状態変数を必ず宣言します。

メッセージ変数の宣言

メッセージ変数は、処理結果をメッセージとしてアプリケーションに伝えるための変数です。メッセージ変数の変数名 は“SQLMSG”です。

SQLMSGは固定長文字列型の変数であり、埋込みSQL宣言節で宣言します。メッセージ変数の宣言のしかたを以下 に示します。

01 SQLMSG PIC X(n)

n:メッセージ変数の長さ(バイト数)です。

1以上32692以下の値を指定します。

1以上32000以下の値を指定します。

メッセージ変数にメッセージが設定される際の規則を以下に示します。

設定されるメッセージは1つだけです。

メッセージの長さがメッセージ変数の長さ(n)を超える場合、メッセージの先頭からn文字分設定されます。

メッセージ変数のメッセージのうしろの領域は空白パディングされます。

カーソル宣言の指定位置

カーソル宣言は、PROCEDURE DIVISION節内に記述します。ただし、宣言したカーソル名を参照するカーソル系のSQL 文よりソースファイル上で先行して記述します。なお、カーソル名は、COBOLプログラムソース上で一意にすることが必 要です。

埋込み例外宣言の指定位置

埋込み例外宣言は、PROCEDURE DIVISIONに記述します。埋込み例外宣言の意味と有効範囲については、“3.2.4 SQL 文の処理結果の確認”で説明します。

実行文の指定位置

データ操作文やトランザクション制御文などの実行文は、PROCEDURE DIVISIONに記述します。

INCLUDE文の指定位置

アプリケーション中にINCLUDE文を指定することができます。インクルードファイルには、SQL文およびCOBOLの言語テ キストを記述できます。インクルードファイルに、ホスト変数および状態変数の宣言を格納しておくことにより、複数のアプ リケーションで共通に使用する変数をまとめて宣言することができます。

INCLUDE文に指定するファイル名

INCLUDE文には、以下のファイル名を指定してください。

インクルードファイル名から拡張子“.COBOL”を除いたファイル名

インクルードファイル名 インクルードファイルの検索優先順位

INCLUDE文が指定された場合、インクルードファイルは、以下の順番に検索されます。

1.

指定されたファイル名に、拡張子“.COBOL”を付加したファイル名

2.

指定されたファイル名

表宣言

表宣言は、スキーマ名の修飾をしない表名を定義する宣言文です。表宣言で定義した表名を、それ以降のSQL文で記 述する場合、スキーマ名を省略することができます。INCLUDE文と表宣言の例を以下に示します。

[インクルードファイル“HOSTVAR”]

01 SQLSTATE PIC X(5).

01 STOCK PIC S9(9) BINARY.

[SQL埋込みCOBOLプログラム]

EXEC SQL BEGIN DECLARE SECTION END-EXEC.

EXEC SQL INCLUDE HOSTVAR END-EXEC.

EXEC SQL END DECLARE SECTION END-EXEC.

PROCEDURE DIVISION.

EXEC SQL DECLARE 在庫表 TABLE ON SCH1 END-EXEC.

EXEC SQL SELECT 在庫数量 INTO :STOCK FROM 在庫表 WHERE 製品番号 = 240 END-EXEC. ↑

スキーマ名修飾省略 DISPLAY "在庫数量 = " STOCK.

STOP RUN.

ドキュメント内 アプリケーション開発ガイド (埋込みSQL編) (ページ 116-119)