第6章 WebScript拡張タグ
6.3 データベースアクセスタグ
データベースアクセスに関するタグについて説明します。
6.3.1 <!DO>
説明
<!DO>は、SELECT文などのデータベースを処理する文を実行するタグです。
実行の結果を返却する文で、正常に実行された場合、result で指定した変数に結果が出力されます。
構文
<!DO statement [ RESULT=result ] [ ONERROR=onerror ] >
パラメタ statement :
・ データベースを処理する文を指定してください。指定できる文と実行条件を、以下に示します。
文 構文
実行結果 返却の有
無
実行条件
動的SELECT文 ・ 構 文 に つ い て は、“SQLリファレン ス”の“基本的なSQL 文”および“動的SQL 文”を参照してくださ い。
あり ・ 操作対象データベース にログインする必要が あります。
INSERT文 なし
UPDATE文:探索
DELETE文:探索
スキーマ定義文 スキーマ操作文 格納構造定義文 格納構造操作文 アクセス制御文 利用者制御文 システム制御文
CALL文 なし ・ 操作対象データベース
にログインする必要が あります。
・ 呼 び 出 す プ ロ シ ジ ャ ルーチンのパラメタの モードがINである必要 があります。
データベース、
データベーススペース 定義文
なし ・ 個別セションでログイン
する必要があります。
・ rdbddlexコマンドを実
行できるユーザ でロ データベース、
文 構文
実行結果 返却の有
無
実行条件
・ トランザクションが開始 されていない状態であ る必要があります。
・ SET SYSTEM
PARAMETER文の実
行結果は次のログイン 後に有効になります。
CREATE DSO文(イン
デックスのDSO定義文)
・ 構 文 に つ い て は“RDB運用ガイド
(XMLアダプダ編)”
を参照してください。
なし ・ 操作対象データベース にログインする必要が あります。
XMLグループ定義文 XMLグループ変更文 XMLグループ削除文 RDBコマンド
(rdbfmtコマンドおよび rdbsloaderコマンド)
・ RDBコマンドについ
ては、“コマンドリファ レンス”を参照してく ださい。
あり ・ 個別セションでログイン する必要があります。
・ RDBコマンドを実行で
きるユーザIDでログイ ンする必要があります。
・ トランザクションが開始 されていない状態であ る必要があります。
行検索文 ・ 構文については、以 降
の“SYSTEM::DB_E RRORCODE” に 示 します。
あり
行操作文 なし
トランザクション設定文 データベース設定文 スキーマ設定文 ロール設定文 トランザクション文
格納構造情報取得文 あり
システム表検索文 検索情報取得文 RDBコマンド用ファイル 作成文
あり ・ 個別セションでログイン
する必要があります。
RDBコマンド用ファイル 削除文
なし
・ 評価方法は、「一般文字列」です。
result :
・ 検索結果を格納する変数名またはリストの要素を、指定してください。
・ 指定された変数に対する変数宣言が行われていない場合は、ローカル変数として取り扱われます。変数名として指 定できるものについては、“6.1.2 命名規約”を参照してください。
・ 動的SELECT文または格納構造情報取得文が実行された場合は、resultで指定した変数に、検索結果がリストとして 格納されます。リストの各要素もリストとして格納されます。列に名前がついている場合には、列名がリストのキーの名 前になります。
・ <!DO>タグで、データベースのアクセスや定義を実行した場合は、トランザクションの排他制御が行われます。<!DO>
タグを実行したあとは、<!DO “COMMIT”>、<!DO “ROLLBACK”>、<!TRANSACTION>または<!ABORT>タグが 実行されるまで処理した資源の排他が行われています。フォーマットファイル終了前に、トランザクションを終了させ てください。なお、個別セションで、一連の処理を複数のフォーマットファイルで実施している場合は、一連の処理を 終了するフォーマットファイルで、トランザクションを終了させてください。
・ <!DO>タグを実行したあとに、<!DO “COMMIT”>、<!DO “ROLLBACK”>、<!TRANSACTION>または<!ABORT>
タグを実行した場合は、検索結果を格納する変数を参照することはできません。変数の参照が終了したあとに、トラ ンザクションを終了させるタグを実行してください。トランザクションを終了後に参照した場合は、エラーとなるか誤っ た結果が参照されます。
・ どの文が実行の結果を返却するかについては、実行文を参照してください。
・ 評価方法は、「左辺値」です。
onerror :
・ SQL文の実行が失敗した場合に、ラベルに該当する<!CATCH>ブロックを処理します。処理される<!CATCH>ブロッ ク内で、“SYSTEM::DB_ERRORCODE”を参照することができます。
・ 環境パラメタDBErrorHandleまたは<!ERRORHANDLE>タグにより、SQL文の実行に対して、エラー処理を行わない 設定になっている場合、onerrorの指定は無効になります。
・ 評価方法は、「一般文字列」です。
データベース処理文
データベース処理文には、以下の文があります。
・ 行検索文
・ 行操作文
・ データベース設定文
・ トランザクション設定文
・ スキーマ設定文
・ ロール設定文
・ トランザクション文
・ 格納構造情報取得文
・ システム表検索文
・ 検索情報取得文
・ RDBコマンド用ファイル作成文
・ RDBコマンド用ファイル削除文 行検索文
SELECT 選択リスト FROM スキーマ名.表名 WHERE ROW_ID IS 文字列
WHERE条件のROW_IDは、行の検索前に動的SELECT文の選択リストにROW_IDを指定して検索された文字列を 指定します。
参照
選択リストおよびスキーマ名.表名の構文については、“SQLリファレンス”を参照してください。
行操作文
【挿入】
INSERT INTO スキーマ名.表名 [ (挿入別リスト) ] VALUES(挿入値リスト)
BLOB型の列に対し値を挿入する場合に、挿入値リストの値指定にファイル定数を指定することができます。
参照
スキーマ名.表名、挿入別リストおよび挿入値リストの構文については、“SQLリファレンス”を参照してください。
【更新】
UPDATE スキーマ名.表名
SET 設定句:探索 [ { , 設定句:探索 } ・・・ ] WHERE ROW_ID IS 文字列
UPDATE スキーマ名.表名
SET 設定句:探索 [ { , 設定句:探索 } ・・・ ] [ WHERE 探索条件]
BLOB型の列に対し値を更新する場合に、設定句:探索の値指定にファイル定数を指定することができます。WHERE 条件のROW_IDは、行の更新前に動的SELECT文の選択リストにROW_ID を指定して検索された文字列を指定しま す。
参照
スキーマ名.表名および設定句:探索の構文については、“SQLリファレンス”の“探索条件”を参照してください。
【削除】
DELETE FROM スキーマ名.表名 WHERE ROW_ID IS 文字列
WHERE条件のROW_IDは、行の更新前に動的SELECT文の選択リストにROW_ID を指定して検索された文字列を
指定します。
参照
スキーマ名.表名の構文については、“SQLリファレンス”の“名前”を参照してください。
ファイル定数
FILE ’ファイル名’
ファイル名をアプリケーション環境パラメタdataDirからの相対パスで指定してください。ただし、パスの一部として「..」 を指定することは出来ません。
データベース設定文
SET CATALOG データベース名
WebScriptセションのSQLアクセスで、対象となるデータベース名を変更します。
データベース設定文の設定が成功した場合、SYSTEMパッケージ変数“SYSTEM::LOGIN_DATABASE”の値は、
データベース設定文に指定されたデータベース名に変更されます。
SQLアクセスには、以下の文があります。
- 動的SELECT文
- INSERT文
- UPDATE文:探索
- DELETE文:探索
- スキーマ定義文
- スキーマ操作文
- 格納構造定義文
- 格納構造操作文
- アクセス制御文
- CALL文
- 行検索文
- 行操作文
- システム表検索文
- 検索情報取得文 トランザクション設定文
SET TRANSACTION
[ READ ONLY | READ WRITE ]
[ READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE ] READ ONLY、READ WRITE:トランザクションアクセスモード
READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE:独立性水準
WebScriptセションのトランザクションモードを変更します。
参照
トランザクションモード、トランザクションアクセスモード、独立性水準については、“アプリケーション開発ガイド(埋込み SQL編)”の“トランザクションモードの変更”を参照してください。
トランザクションについては、“アプリケーション開発ガイド(埋込みSQL編)”の“アプリケーションとトランザクション処 理”を参照してください。
スキーマ設定文
SET SCHEMA スキーマ名
WebScriptセションのSQLアクセスで、スキーマ名を省略したときのスキーマ名を変更します。
スキーマ設定文の設定が成功した場合、SYSTEMパッケージ変数“SYSTEM::LOGIN_SCHEMA”の値は、スキーマ 設定文に指定されたスキーマ名に変更されます。
SQLアクセスには、以下の文があります。
- 動的SELECT文
- INSERT文
- UPDATE文:探索
- DELETE文:探索
- スキーマ定義文
- スキーマ操作文
- 格納構造操作文
- アクセス制御文
- CALL文
- 行検索文
- 行操作文
- システム表検索文
- 検索情報取得文 ロール設定文
SET ROLE {ロール名|NONE|DEFAULT}
ロール名:現在のログインユーザIDに対して有効とするロールの名前を指定します。
NONE:現在のログインユーザIDに対してロールを無効とします。
DEFAULT:現在のログインユーザIDのデフォルトのロールを有効とします。
参照
ロールについては、“RDB運用ガイド(データベース定義編)”の“権限情報定義”を参照してください。
トランザクション文
【COMMIT】 COMMIT
COMMITを指定した場合は、SQL文のCOMMIT WORKと同じ動作になります。
【ROLLBACK】 ROLLBACK
ROLLBACKを指定した場合は、SQL文のROLLBACK WORKと同じ動作になります。
格納構造情報取得文
格納構造情報取得文は、データベースの論理構造以外のデータベース定義情報を取得する文です。詳細は、“D.2 検索情報取得”を参照してください。
種類 格納構造情報取得文 意味
DSO一覧 GET DSO_LIST 表に含まれるすべてのDSOの基本
情報の一覧を取得します。
DSO情報 GET DSO_INF 特定のDSOの詳細情報を取得しま
す。
格納キー列一覧 GET
DSO_STR_KEY_LI ST
特定のDSOのキーを構成する列に 関する情報を取得します。
分割キー列一覧 GET
DSO_PAT_KEY_LI ST
特定のDSOが分割格納を行ってい る場合の分割キーを構成する列に 関する情報を取得します。
DSI一覧 GET DSI_LIST 特定のDSOに含まれるすべての
DSIの基本情報の一覧を取得しま す。
DSI情報 GET DSI_INF 特定のDSIの詳細情報を取得しま
す。