3 UAP の設計
3.1 UAP 中での SQL の基本構成
ここでは,UAP中での
SQL
の基本構成の中で,特にHiRDB
サーバを使用する場合とXDM/RD E2
を使用する場合で差異がある項目について説明します。UAP
中でのSQL
の基本構成を次の図に示します。なお,ここではUAP
をCOBOL
言 語で記述する場合について説明します。図
3-1 UAP
中でのSQL
の基本構成(1) 埋込み変数と標識変数の宣言
SQL
で検索したデータをUAP
側で受け取ったり,反対にUAP
側のデータをSQL
で表3.
UAPの設計に挿入したりするには,両方の言語間の橋渡しをする変数が必要になります。このため に,埋込み変数を使用します。また,ナル値を含むデータを受け渡す必要のあるときに は,埋込み変数とあわせて標識変数を使用します。
SQL
中での埋込み変数および標識変数の指定方法については,「(5) 検索,更新のSQL
(実行文)」を参照してください。
埋込み変数および標識変数の宣言例を次に示します。
EXEC SQL
BEGIN DECLARE SECTION ………1 END-EXEC.
77 XUSERID PIC X(7).………2 77 XPSWD PIC X(7).………2 77 XSCODE PIC X(4).………2 77 XSNAME PIC N(8).………2 77 XGRYO PIC S9(9) COMP.………2 77 IGRYO PIC S9(4) COMP.………3 EXEC SQL
END DECLARE SECTION ………4 END-EXEC.
説明
1.
埋込み変数の宣言の始まりを示します。2.
埋込み変数を宣言します。SQLとUAP
側でデータを受け渡しするときには,あ らかじめ決められた規則に従って記述します。SQLのデータ型とデータ記述に ついては,「5.1.1 SQLのデータ型とデータ記述」を参照してください。3.
埋込み変数XGRYO
に対する標識変数を宣言します。なお,BLOB型の埋込み変 数に対する標識変数の場合は,PIC S9(9) COMP.となります。4.
埋込み変数の宣言の終わりを示します。ナル値の既定値設定機能を使用している場合,検索結果がナル値のときはナル値の代わ りに既定値(数データの場合は
0,文字データの場合は空白)を埋込み変数で受け取るこ
とができます。このとき,既定値とナル値とを区別しなくてよいのであれば,標識変数 を使用する必要がなくなります。ナル値の既定値設定機能については,マニュアル「VOS3 データマネジメントシステム XDM E2系 XDM/RD E2 SQLリファレンス」
を参照してください。
(2) XDM/RD E2 との接続
XDM/RD E2
にユーザの認可識別子とパスワードを通知して,UAPがXDM/RD E2
を使 用できる状態にします。これをXDM/RD E2
との接続といいます。XDM/RD E2との接 続方法を次に示します。EXEC SQL
CONNECT :XUSERID IDENTIFIED BY :XPSWD END-EXEC.
説明
埋込み変数(:XUSERID)に格納された認可識別子および埋込み変数(:XPSWD)
に格納されたパスワードで
XDM/RD E2
と接続します。認可識別子
XDM/RD E2
と接続する場合に有効となる認可識別子を次に示します。
埋込み型
UAP
中のSQL
に,認可識別子を省略した場合に仮定する認可識別子を次 に示します。• 定義系
SQL
および動的SQL
• 定義系
SQL
以外の静的SQL
CALL
文で呼び出すプロシジャ中のSQL
に,認可識別子を省略した場合に仮定する 認可識別子を次に示します。• 静的
SQL
プロシジャ所有者(外部プロシジャとして呼び出す
UAP
の所有者と同じ)• 動的
SQL
指定できる認可識別子とパスワードの規則は,XDM/RD E2の規則に従います。詳
優先順位 認可識別子の指定優先順序
1 CONNECT文で指定した認可識別子
2 環境変数PDUSERで指定した値
優先順位 認可識別子の指定優先順序
1 CONNECT文で指定した認可識別子
2 1を省略した場合は,環境変数PDUSERで指定した認可識別子
優先順位 認可識別子の指定優先順序
1 プリプロセス時の「A」オプションで指定した既定認可識別子 2 1を省略した場合は,CONNECT文で指定した認可識別子 3 1,2を省略した場合は,環境変数PDUSERで指定した認可識別子
優先順位 認可識別子の指定優先順序
1 CONNECT文で指定した認可識別子
2 1を省略した場合は,環境変数PDUSERで指定した認可識別子
3.
UAPの設計細については,マニュアル「VOS3 データマネジメントシステム XDM E2系
XDM/RD E2 SQL
リファレンス」を参照してください。(3) カーソル宣言
HiRDB
サーバを使用する場合とXDM/RD E2
を使用する場合で特に差異はありません。カーソル宣言については,マニュアル「HiRDB Version 9 UAP開発ガイド」を参照して ください。
(4) エラー時の処置の指定
HiRDB
サーバを使用する場合とXDM/RD E2
を使用する場合で特に差異はありません。エラー時の処置の指定については,マニュアル「HiRDB Version 9 UAP開発ガイド」を 参照してください。
(5) 検索,更新の SQL(実行文)
データを検索,更新,挿入,または削除するための
SQL
文を記述します。各SQL
文の 記述方法については,マニュアル「VOS3 データマネジメントシステム XDM E2系XDM/RD E2 SQL
リファレンス」を参照してください。ただし,XDM/RD E2接続機能を使用する場合は,埋込み変数および標識変数の形式と して,INDICATOR句は指定できません。XDM/RD E2の形式と
XDM/RD E2
接続機能 を使用する場合の形式を次に示します。•
XDM/RD E2
の形式•
XDM/RD E2
接続機能を使用する場合の形式(6) エラーの判定
SQL
の実行中にエラーが発生した場合,SQLCODE,SQLSTATEを参照すると,XDM/RD E2
から返されるリターンコードがわかります。そのリターンコードを利用して,そ のあとの処理をどうするか指示します。ただし,「(4) エラー時の処置の指定」で,すで 埋込み変数指定::=〔GROUPITEM〕 埋込み変数名 〔標識変数名〕パラメタ指定::=パラメタ名 〔標識パラメタ名〕
標識変数名::=〔INDICATOR〕 埋込み変数名 標識パラメタ名::=〔INDICATOR〕 パラメタ名 埋込み変数名::=:〔ホスト識別子1.〕ホスト識別子2
埋込み変数指定::=〔GROUPITEM〕 埋込み変数名 〔標識変数名〕
パラメタ指定::=パラメタ名 〔標識パラメタ名〕
標識変数名::=埋込み変数名 標識パラメタ名::=パラメタ名
埋込み変数名::=:〔ホスト識別子1.〕ホスト識別子2
に同じ内容のエラー処理を指定している場合は,ここで指示する必要はありません。
XDM/RD E2
接続機能を使用する場合は,SQLCODE変数で受け取るSQLCODE
は,XDM/RD E2
が設定するSQLCODE
またはHiRDB
クライアントが設定するSQLCODE
となります。また,SQLSTATE変数で受け取る値は,XDM/RD E2が設定するSQLSTATE
またはHiRDB
クライアントが設定するSQLSTATE
となります。SQLCODE
およびSQLSTATE
については,マニュアル「VOS3 データマネジメントシ ステム XDM E2系 XDM/RD E2 SQLリファレンス」を参照してください。DECLARE CURSOR
のような宣言文の直後に,エラーの判定はしないでください。エ ラーの判定をすると,不正なSQLCODE
を参照して,XDM/RD E2が誤動作する場合が あります。(7) トランザクションの有効化
HiRDB
サーバを使用する場合とXDM/RD E2
を使用する場合で特に差異はありません。トランザクションの有効化については,マニュアル「HiRDB Version 9 UAP開発ガイ ド」を参照してください。
(8) トランザクションの無効化
HiRDB
サーバを使用する場合とXDM/RD E2
を使用する場合で特に差異はありません。トランザクションの無効化については,マニュアル「HiRDB Version 9 UAP開発ガイ ド」を参照してください。
(9) XDM/RD E2 からの切り離し
トランザクションを正常終了させて,UAPを
XDM/RD E2
から切り離します。DISCONNECT
文は,RELEASE指定のCOMMIT
文を実行したときと同じになりま す。トランザクションを正常終了させて,UAPを
XDM/RD E2
から切り離すSQL
文を次に 示します。EXEC SQL DISCONNECT END-EXEC.
説明
トランザクションを正常終了させて,UAPを