221 OWA_OPT_LOCK
OWA_OPT_LOCK
パッケージには、更新内容の消失を防ぐためのコミット時ロック方策を実行するサブプログラムが含まれています。
この章のトピックは、次のとおりです:
参照:
このパッケージの実装の詳細は、次のマニュアルを参照してください。
221.1 OWA_OPT_LOCKの概要
OWA_OPT_LOCKパッケージには、更新内容の消失を防ぐためのコミット時ロック方策を実行するサブプログラムが含まれています。
ユーザーが更新しようとしている行が、作業中に他のユーザーによって変更されているかどうかを検査します。
HTTPはステートレス・プロトコルであるため、PL/SQLゲートウェイは、従来型のデータベースのロック構造を使用できません。OWA_OPT_LOCK
パッケージには、更新内容の消失問題に対処する方法が2つあります。
-
隠しフィールド方式では、HTMLページの隠しフィールドに前の値を格納します。ユーザーが更新を要求すると、PL/SQLゲートウェイはこれらの値をデータベースの現在の状態と照合します。更新操作は、値が一致した場合にのみ実行されます。この方式を使用するには、owa_opt_lock.store_valuesプロシージャをコールします。
-
チェックサム方式では、値そのものではなくチェックサムを格納します。この方式を使用するには、owa_opt_lock.checksumファンクションをコールします。
これらの方式は、コミット時に実行されます。これらの方式では、他のユーザーによる更新の実行は妨げませんが、介入更新が発生した場合に現行の更新を拒否します。
221.2 OWA_TEXTのタイプ
このデータ・タイプは、ROWIDを保持するためのPL/SQL表です。
TYPE VCARRAY IS TABLE OF VARCHAR2(2000) INDEX BY BINARY_INTEGER
これは、OWA_TEXT
.VC_ARR
データ・タイプと異なるので注意してください。
221.3 OWA_OPT_LOCKサブプログラムの要約
この表は、OWA_OPT_LOCK
サブプログラムを示し、簡単に説明しています。
表221-1 OWA_OPT_LOCKパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
チェックサム値を戻します。 |
|
ROWID値を戻します。 |
|
後で検証するために、隠しフィールドに未修正の値を格納します。 |
|
格納された値を修正値と照合します。 |
221.3.1 CHECKSUMファンクション
このファンクションは、指定された文字列または表内の行についてのchecksum
値を戻します。表内の行の場合、このファンクションは、行内の列の値を基にしてchecksum
値を計算します。このファンクションには2つのバージョンがあります。
1番目のバージョンは、指定された文字列に基づいてchecksum
を戻します。これは、データベースによって実行される、純粋な32ビットchecksum
で、インターネット1プロトコルに基づいています。
2番目のバージョンは、表内の行の値に基づいてchecksum
を戻します。これは、不純な32ビットchecksumで、インターネット1プロトコルに基づいています。
構文
OWA_OPT_LOCK.CHECKSUM( p_buff IN VARCHAR2) RETURN NUMBER; OWA_OPT_LOCK.CHECKSUM( p_buff IN VARCHAR2) RETURN NUMBER PARALLEL_ENABLE DETERMINISTIC; OWA_OPT_LOCK.CHECKSUM( p_owner IN VARCHAR2, p_tname IN VARCHAR2, p_rowid IN ROWID) RETURN NUMBER;
パラメータ
表221-2 CHECKSUMファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
表の所有者。 |
|
表の名前。 |
|
|
221.3.2 GET_ROWIDファンクション
このファンクションは、指定されたOWA_OPT_LOCK.VCARRAY
DATA
TYPE
からのROWID
データ・タイプを戻します。
構文
OWA_OPT_LOCK.GET_ROWID( p_old_values IN vcarray) RETURN ROWID; OWA_OPT_LOCK.GET_ROWID( p_old_values IN vcarray) RETURN ROWID PARALLEL_ENABLE DETERMINISTIC;
パラメータ
表221-3 GET_ROWIDファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
このパラメータは、通常、HTMLフォームから渡されます。 |
221.3.3 STORE_VALUESプロシージャ
このプロシージャは、後で更新する行の列の値を格納します。この値は、非表示HTMLフォーム要素内に格納されます。
構文
OWA_OPT_LOCK.STORE_VALUES( p_owner IN VARCHAR2, p_tname IN VARCHAR2, p_rowid IN ROWID);
パラメータ
表221-4 STORE_VALUESプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
表の所有者。 |
|
表の名前。 |
|
値を格納する行。 |
使用上のノート
行を更新する前に、これらの値を現在の行の値と比較して、行の値が変更されていないことを確認してください。値が変更されている場合、そのユーザーに警告して、更新を実行するかどうかを判断してもらってください。
このプロシージャは、一連の非表示フォーム要素を生成します。
-
表の所有者に対して1つの非表示フォーム要素が作成されます。要素名は"
old
_p_tname
"です。ここで、p_tname
は表の名前です。要素の値は、所有者名です。 -
表の名前に対して1つの非表示フォーム要素が作成されます。要素名は"
old
_p_tname
"です。ここで、p_tname
は表の名前です。要素の値は、表の名前です。 -
行内の列ごとに1つの要素が作成されます。要素名は"
old
_p_tname
"です。ここで、p_tname
は表の名前です。要素の値は、列の値です。
「VERIFY_VALUESファンクション」も参照してください。
221.3.4 VERIFY_VALUESファンクション
このファンクションは、指定された行の値が最後の問合せ以降に更新されたかどうかを検証します。
このファンクションはSTORE_VALUESプロシージャとともに使用します。
構文
OWA_OPT_LOCK.VERIFY_VALUES( p_old_values IN vcarray) RETURN BOOLEAN;
パラメータ
表221-5 VERIFY_VALUESファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
次の情報を含むPL/SQL表。
残りのインデックスには、表内の列の値が含まれます。 通常、このパラメータは、非表示フォーム要素上に行の値を格納するためにすでにSTORE_VALUESプロシージャをコール済のHTMLフォームから渡されます。 |
戻り値
他の更新が実行されていない場合はTRUE
で、実行されている場合はFALSE
になります。