3.1.1 UAP中でのSQLの基本構成の説明
ここでは,UAP中でのSQLの基本構成の中で,特にHiRDBサーバを使用する場合とXDM/RD E2を使用する場合で差異がある項目について説明します。
UAP中でのSQLの基本構成を次の図に示します。なお,ここではUAPをCOBOL言語で記述する場合について説明します。
|
- 〈この項の構成〉
(1) 埋込み変数と標識変数の宣言
SQLで検索したデータをUAP側で受け取ったり,反対にUAP側のデータをSQLで表に挿入したりするには,両方の言語間の橋渡しをする変数が必要になります。このために,埋込み変数を使用します。また,ナル値を含むデータを受け渡す必要のあるときには,埋込み変数とあわせて標識変数を使用します。
SQL中での埋込み変数および標識変数の指定方法については,「検索,更新の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.
- 説明
-
-
埋込み変数の宣言の始まりを示します。
-
埋込み変数を宣言します。SQLとUAP側でデータを受け渡しするときには,あらかじめ決められた規則に従って記述します。SQLのデータ型とデータ記述については,「SQLのデータ型とデータ記述」を参照してください。
-
埋込み変数XGRYOに対する標識変数を宣言します。なお,BLOB型の埋込み変数に対する標識変数の場合は,PIC S9(9) COMP.となります。
-
埋込み変数の宣言の終わりを示します。
-
ナル値の既定値設定機能を使用している場合,検索結果がナル値のときはナル値の代わりに既定値(数データの場合は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と接続する場合に有効となる認可識別子を次に示します。
優先順位
認可識別子の指定優先順序
1
CONNECT文で指定した認可識別子
2
環境変数PDUSERで指定した値
埋込み型UAP中のSQLに,認可識別子を省略した場合に仮定する認可識別子を次に示します。
-
定義系SQLおよび動的SQL
優先順位
認可識別子の指定優先順序
1
CONNECT文で指定した認可識別子
2
1を省略した場合は,環境変数PDUSERで指定した認可識別子
-
定義系SQL以外の静的SQL
優先順位
認可識別子の指定優先順序
1
プリプロセス時の「A」オプションで指定した既定認可識別子
2
1を省略した場合は,CONNECT文で指定した認可識別子
3
1,2を省略した場合は,環境変数PDUSERで指定した認可識別子
CALL文で呼び出すプロシジャ中のSQLに,認可識別子を省略した場合に仮定する認可識別子を次に示します。
-
静的SQL
プロシジャ所有者(外部プロシジャとして呼び出すUAPの所有者と同じ)
-
動的SQL
優先順位
認可識別子の指定優先順序
1
CONNECT文で指定した認可識別子
2
1を省略した場合は,環境変数PDUSERで指定した認可識別子
指定できる認可識別子とパスワードの規則は,XDM/RD E2の規則に従います。詳細については,マニュアル「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の形式
埋込み変数指定::=〔GROUPITEM〕 埋込み変数名 〔標識変数名〕 パラメタ指定::=パラメタ名 〔標識パラメタ名〕 標識変数名::=〔INDICATOR〕 埋込み変数名 標識パラメタ名::=〔INDICATOR〕 パラメタ名 埋込み変数名::=:〔ホスト識別子1.〕ホスト識別子2
-
XDM/RD E2接続機能を使用する場合の形式
埋込み変数指定::=〔GROUPITEM〕 埋込み変数名 〔標識変数名〕 パラメタ指定::=パラメタ名 〔標識パラメタ名〕 標識変数名::=埋込み変数名 標識パラメタ名::=パラメタ名 埋込み変数名::=:〔ホスト識別子1.〕ホスト識別子2
(6) エラーの判定
SQLの実行中にエラーが発生した場合,SQLCODE,SQLSTATEを参照すると,XDM/RD E2から返されるリターンコードがわかります。そのリターンコードを利用して,そのあとの処理をどうするか指示します。ただし,「エラー時の処置の指定」で,すでに同じ内容のエラー処理を指定している場合は,ここで指示する必要はありません。
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をXDM/RD E2から切り離します。また,トランザクションを取り消したあとにUAPをXDM/RD E2から切り離す場合には,RELEASE指定のROLLBACK文を実行します。なお,DISCONNECT文,COMMIT文(RELEASE指定),ROLLBACK文(RELEASE指定)のどれも実行しないでUAPが終了した場合,ROLLBACK文(RELEASE指定)が自動的に実行され,実行中のトランザクションは無効となるので注意してください。