1.13.1 位置付け子(locator)の概要と規則
(1) 概要
位置付け子はサーバ上にある特定のデータ値を識別する4バイトの値を持つデータです。位置付け子を用いることで,クライアント上にデータの実体を保持しないで,そのデータを扱うSQLの処理ができます。
(2) 規則
-
位置付け子の種類を次の表に示します。
表1‒37 位置付け子の種類 種類
内容
BLOB位置付け子
サーバ上のBLOB型データ値を識別する値を持つ
BINARY位置付け子
サーバ上のBINARY型データ値を識別する値を持つ
-
位置付け子の指定方法と指定できる箇所を次の表に示します。
表1‒38 位置付け子の指定方法と指定できる箇所 種類
指定方法
指定できる箇所
BLOB位置付け子
埋込み変数
BLOB型の埋込み変数が指定できる箇所
BINARY位置付け子
埋込み変数
BINARY型の埋込み変数が指定できる箇所
ただし,割り当てられたサーバ上のデータのデータ型が,最大長が32,001バイト以上のBINARY型である位置付け子の埋込み変数の場合は,最大長が32,001バイト以上のBINARY型の埋込み変数を指定できる箇所だけとなります。
-
サーバ上のデータ値を割り当てられていない位置付け子は無効です。
-
位置付け子を次に示す箇所に指定することで,データ値が割り当てられ,その位置付け子は有効となります。有効な位置付け子は同じトランザクション中で,対応するデータ型のデータと同様にSQL文中に指定できます。
-
1行SELECT文のINTO句
-
FETCH文のINTO句
-
代入文の代入先
-
手続きのOUTパラメタ及びINOUTパラメタに対するCALL文の引数
-
EXECUTE文のINTO句
-
-
位置付け子は次の場合に無効となります。
-
FREE LOCATOR文に指定
-
COMMIT文の実行
-
ROLLBACK文の実行
-
DISCONNECT文の実行
-
PURGE TABLE文の実行時の自動的なCOMMIT
-
クライアント環境変数のPDCMMTBFDDLにYESを設定している場合の定義系SQL実行時の自動的なCOMMIT
-
暗黙的ロールバックによるトランザクションの終了
-
-
無効な位置付け子を,割り当てられたデータを扱うSQL文中,又はFREE LOCATOR文に指定した場合はエラーとなります。
-
代入文形式2の代入先,及び代入値に位置付け子の埋込み変数を指定することで,サーバ上の同じデータを識別する位置付け子を複数作成した場合は,どれかを無効にしても,ほかの位置付け子は有効のままとなります。
-
既にデータを割り当てられている有効な位置付け子に対して,再びほかのデータを割り当てた場合でも,元の位置付け子の値は有効のままとなります。
-
位置付け子の値をUAPの記述言語によって書き換えた場合は,位置付け子が無効となります。又は書き換える前のデータと異なるデータを識別する場合があります。
-
無効な位置付け子に対して,UAPの記述言語によって有効な位置付け子の値を代入した場合,その位置付け子は有効となり,代入元の位置付け子と同じデータを識別します。また,この場合にどれかを無効にすると,どちらの位置付け子も無効となります。