リリース情報


38.5 第 6 章 SQL ステートメント

38.5.1 区分化キーの更新がサポートされるようになりました

区分化キーの更新がサポートされるようになりました。DB2_UPDATE_PART_KEY=ON の 場合にのみ、第 6 章の各種ステートメントから次のテキストが 削除されます。

注:
DB2_UPDATE_PART_KEY=OFF でも、制約事項は適用されます。

38.5.1.1 ステートメント: ALTER TABLE

規則

38.5.1.2 ステートメント: CREATE TABLE

規則

38.5.1.3 ステートメント: DECLARE GLOBAL TEMPORARY TABLE PARTITIONING KEY (column-name,...)

注:
区分化キー列は更新できません (SQLSTATE 42997)。

38.5.1.4 ステートメント: UPDATE

脚注

38.5.2 ユニコード・データベースのより大きな索引キー

38.5.2.1 ALTER TABLE

レジストリー変数 DB2_INDEX_2BYTEVARLEN がオンであったときに定義された、 1 次および固有キーを含む索引の一部である可変長列の長さを 255 バイトを超える 長さに変更することができます。 実際、可変長列は外部キーに関係していますが、レジストリー値の設定にかかわらず、 列を 255 バイトを超える長さに変更することを妨げるわけではありません。 ただし、対応する 1 次キーの長さが 255 バイトを超えていないかぎり、長さが 255 を 超えるデータを表に挿入することはできません。 これが可能なのは、レジストリー変数 ON で 1 次キーが作成された場合だけです。

38.5.2.2 CREATE INDEX

レジストリー変数 DB2_INDEX_2BYTEVARLEN が ON であれば、 長さが 255 バイトを超える可変長列に索引を定義できます。

38.5.2.3 CREATE TABLE

レジストリー変数 DB2_INDEX_2BYTEVARLEN が ON になっていれば、 可変キー部分を持つ 1 次および固有キーのサイズを 255 より大きくすることができます。 長さが 255 バイトを超える可変長列に外部キーを定義できます。

38.5.3 ALTER SEQUENCE

ALTER SEQUENCE

ALTER SEQUENCE ステートメントは、以下の動作によってシーケンスの属性を変更します。

呼び出し

このステートメントはアプリケーション・プログラムに組み込むことができ、また 動的 SQL ステートメントの使用によって出すことができます。 動的に準備できる実行可能ステートメントです。ただし、バインド・オプション DYNAMICRULES BIND が適用されている場合、 ステートメントを動的に準備することはできません (SQLSTATE 42509)。

権限

ステートメントの許可 ID によって保持されている特権には、 少なくとも以下のいずれかが含まれていなければなりません。

構文

>>-ALTER SEQUENCE--sequence-name-------------------------------->
 
      .-------------------------------------------.
      V                                           |
>-------+-RESTART--+-------------------------+-+--+------------><
        |          '-WITH--numeric-constant--' |
        +-INCREMENT BY--numeric-constant-------+
        +-+-MINVALUE--numeric-constant--+------+
        | '-NO MINVALUE-----------------'      |
        +-+-MAXVALUE--numeric-constant--+------+
        | '-NO MAXVALUE-----------------'      |
        +-+-CYCLE----+-------------------------+
        | '-NO CYCLE-'                         |
        +-+-CACHE--integer-constant--+---------+
        | '-NO CACHE-----------------'         |
        '-+-ORDER----+-------------------------'
          '-NO ORDER-'
 

説明

sequence-name
特定のシーケンスを識別します。 名前の組み合わせ、また暗黙および明示スキーマ名は、 現在のサーバーに存在するシーケンスを識別していなければなりません。 この名前によるシーケンスが、明示的または暗黙的に指定されたスキーマに存在しない場合、 エラー (SQLSTATE 42704) が出されます。

RESTART
シーケンスを再始動します。 numeric-constant が指定されていない場合、シーケンスは、 そのシーケンスを作成した CREATE SEQUENCE ステートメントに開始値として暗黙的または 明示的に指定されている値で再始動されます。

WITH numeric-constant
指定されている値でシーケンスを再始動します。 この値は、小数点の右側に非ゼロの数字がない (SQLSTATE 42894) かぎり、シーケンスに関連する データ・タイプの列に割り当てることができる正または負の値にすることができます (SQLSTATE 42820)。

INCREMENT BY
シーケンスの連続値の間隔を指定します。 この値は、小数点の右側に非ゼロの数字がない (SQLSTATE 428FA) かぎり、シーケンスに関連する データ・タイプの列に割り当てることができる正または負の値にすることができ (SQLSTATE 42820)、 長精度整数定数の値を超えることはありません (SQLSTATE 42815)。

この値が負の場合、値のシーケンスは下降します。 正であれば、値のシーケンスは上昇します。 値がゼロ、または MINVALUE および MAXVALUE に定義されている範囲よりも大きい場合、 生成される値は 1 つだけですが、そうでなければシーケンスは昇順シーケンスとして 扱われます。

MINVALUE または NO MINVALUE
降順シーケンスが値の生成を循環または停止する最小値、あるいは最大値に達した後、 昇順シーケンスが循環する最小値を指定します。

MINVALUE numeric-constant
最小値である数値定数を指定します。 この値は、小数点の右側に非ゼロの数字がない (SQLSTATE 428FA) かぎり、シーケンスに関連する データ・タイプの列に割り当てることができる正または負の値にすることができます (SQLSTATE 42820) が、 最大値以下でなければなりません (SQLSTATE 42815)。

NO MINVALUE
昇順シーケンスの場合、値は START WITH 値、また START WITH が指定されていなければ 1 です。 降順シーケンスの場合、シーケンスに関連するデータ・タイプの最小値です。 これがデフォルトです。

MAXVALUE または NO MAXVALUE
昇順シーケンスが値の生成を循環または停止する最大値、あるいは最小値に達した後、 降順シーケンスが循環する最大値を指定します。

MAXVALUE numeric-constant
最大値である数値定数を指定します。 この値は、小数点の右側に非ゼロの数字がない (SQLSTATE 428FA) かぎり、シーケンスに関連する データ・タイプの列に割り当てることができる正または負の値にすることができます (SQLSTATE 428FA) が、 最小値以上でなければなりません (SQLSTATE 42815)。

NO MAXVALUE
昇順シーケンスの場合、値はシーケンスに関連するデータ・タイプの最大値です。 降順シーケンスの場合、START WITH 値、また START WITH が指定されていなければ -1 です。 これがデフォルトです。

CYCLE または NO CYCLE
その最大値または最小値に達した後、シーケンスが値の生成を続行するかどうかを指定します。 次の値が境界条件を正確に満たしたとき、また循環が許可されていれば、 次の値が START WITH 値に丸められることによって決定される場合にその値を超えることによって、 シーケンスの境界に達します。

CYCLE
最大値または最小値に達した後、このシーケンスについて値の生成が続行されるかどうかを指定します。 このオプションが使用されると、昇順シーケンスが最大値に達した後、その最小値が生成されます。 降順シーケンスが最小値に達した後、その最大値が生成されます。 シーケンスの最大値および最小値は、循環に使用される範囲を決定します。

CYCLE が有効であれば、シーケンスについて重複する値が生成される場合があります。

NO CYCLE
シーケンスの最大値または最小値に達した後、そのシーケンスについて値が生成されないことを 指定します。 これがデフォルトです。

CACHE または NO CACHE
高速アクセスのため、事前割り振り値のいくつかをメモリーに保管するかどうかを指定します。 これはパフォーマンスおよびチューニング・オプションです。

CACHE integer-constant
事前割り振りされ、メモリーに保管されるシーケンス値の最大数を指定します。 値を事前割り振りしてキャッシュに保管しておくと、シーケンスのために値を生成するとき、 ログへの非同期入出力が少なくなります。

システム障害が起こると、コミットされたステートメントで使用されていない キャッシュ済みシーケンス値はすべて失われます (使用されなくなります)。 CACHE オプションに指定する値は、システム障害の際に失われても構わないシーケンス値の 最大数です。

最小値は 2 です (SQLSTATE 42815)。 デフォルト値は CACHE 20 です。

NO CACHE
シーケンスの値が事前割り振りされないよう指定します。 システム障害、シャットダウン、またはデータベース非活動化の際、 値が失われることはありません。 このオプションが指定されると、シーケンスの値はキャッシュに保管されません。 この場合、シーケンスの新しい値が要求されるたびに、ログに対して非同期入出力が行われます。

NO ORDER または ORDER
要求の順序でシーケンス番号が生成されるかどうかを指定します。

ORDER
要求の順序でシーケンス番号が生成されるよう指定します。

NO ORDER
要求の順序でシーケンス番号を生成する必要がないことを指定します。 これがデフォルトです。

シーケンスを再始動、または CYCLE に変更した後、前にシーケンスによって生成された 値と重複するシーケンス番号が可能になります。

例 1 : 数値なしで RESTART を指定する理由として考えられるのは、 シーケンスを START WITH 値にリセットすることです。 この例では、1 から表の行数までの数値を生成し、一時表を使用して表に追加した列に その数値を挿入することが目的です。 もう一度使用すると、すべての結果行に番号が付けられているという結果が返されます。

   ALTER SEQUENCE org_seq 
   RESTART
   SELECT NEXTVAL for org_seq, org.* 
      FROM org
 

38.5.4 ALTER TABLE

構文の一部の変更:

 
column-alteration
 
|--column-name-------------------------------------------------->
 
>-----+-SET--+-DATA TYPE--+-VARCHAR-----------+---(--整数--)--+----------+>
      |      |            +-CHARACTER VARYING-+               |          |
      |      |            '-CHAR VARYING------'               |          |
      |      '-EXPRESSION AS--(--generation-expression--)-----'          |
      +-ADD SCOPE--+-typed-table-name-+----------------------------------+
      |            '-typed-view-name--'                                  |
      '-+-| identity-alteration |--------------------------------------+-'
        '-SET GENERATED--+-ALWAYS-----+---+--------------------------+-'
                         '-BY DEFAULT-'   '-| identity-alteration |--'
 
>---------------------------------------------------------------|
 
identity-alteration
 
|---+-RESTART--+--------------------------+-+-------------------|
    |          '-WITH--numeric-constant---' |
    +-SET INCREMENT BY--numeric-constant----+
    |                    (1)                |
    +-SET--+-NO MINVALUE-----------------+--+
    |      '-MINVALUE--numeric-constant--'  |
    +-SET--+-NO MAXVALUE-----------------+--+
    |      '-MAXVALUE--numeric-constant--'  |
    +-SET--+-CYCLE----+---------------------+
    |      '-NO CYCLE-'                     |
    +-SET--+-NO CACHE-----------------+-----+
    |      '-CACHE--integer-constant--'     |
    '-SET--+-NO ORDER-+---------------------'
           '-ORDER----'
 

注:

  1. パラメーター NOMINVALUE、NOMAXVALUE、NOCYCLE、NOCACHE、および NOORDER は、 スペースなしで指定することができます。 これらの単一ワード・バージョンはすべて、2 ワード・バージョンに代わって受け入れられます。

以下のパラメーターを追加します。

SET GENERATED
列の値が常に生成されるか、またはデフォルト値が必要なときのみ生成されるかを 指定します。

ALWAYS
行が表に挿入、または更新されたとき、列の値が常に生成されます。 列は、生成された列として定義されていなければなりません (SQLSTATE 42837)。

BY DEFAULT
行が表に挿入されたとき、その値が指定されていないかぎり、列の値が生成されます。 列は、生成された列として定義されていなければなりません (SQLSTATE 42837)。

RESTART または RESTART WITH numeric-constant
識別列に関連付けられたシーケンスの状態をリセットします。 WITH numeric-constant が指定されていないと、識別列のシーケンスは、 作成されたときに開始値として (暗黙的または明示的のいずれかで) 定義された 値で再開始されます。 numeric-constant は、小数点の右側にゼロ以外の数字が ある (SQLSTATE 42894) かぎり、この列に割り当てられた正または負の値を とりうる数値定数です (SQLSTATE 42820)。 列はあらかじめ IDENTITY 属性で定義されていなければなりません (SQLSTATE 42837)。 numeric-constant が列の次の値として使用されます。

SET INCREMENT BY numeric-constant
識別列の連続値の間隔を指定します。 列はあらかじめ IDENTITY 属性で定義されていなければなりません (SQLSTATE 42837)。 この値は、小数点の右側に非ゼロの数字がない (SQLSTATE 42894) かぎり、この列に割り当てることができる 正または負の値で (SQLSTATE 42820)、長精度整数定数の値を超えることはありません (SQLSTATE 42815)。

この値が負の場合、この識別列の値のシーケンスは下降します。 正であれば、この識別列の値のシーケンスは上昇します。 値がゼロ、または MINVALUE および MAXVALUE に定義されている範囲よりも大きい場合、 DB2 が生成する値は 1 つだけですが、そうでなければシーケンスは昇順シーケンスとして扱われます。

SET MINVALUE numeric-constant または NO MINVALUE
降順識別列が値の生成を循環または停止する最小値、あるいは最大値に達した後、 昇順識別列が循環する最小値を指定します。 列はあらかじめ IDENTITY 属性で定義されていなければ なりません (SQLSTATE 42837)。

MINVALUE numeric-constant
最小の数値定数を指定します。 この値は、小数点の右側に非ゼロの数字がない (SQLSTATE 42894) かぎり、この列に割り当てることができる 正または負の値にすることができます (SQLSTATE 42820) が、最大値未満でなければなりません (SQLSTATE 42815)。

NO MINVALUE
昇順シーケンスの場合、値は START WITH 値、また START WITH が指定されていなければ 1 です。 降順シーケンスの場合、列のデータ・タイプの最小値です。

SET MAXVALUE numeric-constant または NO MAXVALUE
昇順識別列が値の生成を循環または停止する最大値、あるいは最小値に達した後、 降順識別列が循環する最大値を指定します。 列はあらかじめ IDENTITY 属性で定義されていなければ なりません (SQLSTATE 42837)。

MAXVALUE numeric-constant
最大値である数値定数を指定します。 この値は、小数点の右側に非ゼロの数字がない (SQLSTATE 42894) かぎり、この列に割り当てることができる 正または負の値にすることができます (SQLSTATE 42820) が、最小値よりも大きくなければなければなりません (SQLSTATE 42815)。

NO MAXVALUE
昇順シーケンスの場合、値は列のデータ・タイプの最大値です。 降順シーケンスの場合、START WITH 値、また START WITH が指定されていなければ -1 です。

SET CYCLE または NO CYCLE
最大値または最小値が生成された後、この識別列が値の生成を続行するかどうかを指定します。 列はあらかじめ IDENTITY 属性で定義されていなければなりません (SQLSTATE 42837)。

CYCLE
最大値または最小値に達した後、この列について値の生成が続行されるかどうかを指定します。 このオプションが使用されると、昇順識別列が最大値に達した後、その最小値が生成されます。 降順識別列が最小値に達した後、その最大値が生成されます。 識別列の最大値および最小値は、循環に使用される範囲を決定します。

CYCLE が有効であれば、識別列について重複する値が生成される場合があります。 固有値が必要であれば (実際には必要ありません)、識別列を使用して 1 桁の固有索引を 定義することによって、固有性が確実になります。 このような識別列に固有索引が存在し、固有ではない値が生成される場合、 エラーが起こります (SQLSTATE 23505)。

NO CYCLE
最大値または最小値に達した後、識別列について値が生成されないことを指定します。

SET CACHE integer-constant または NO CACHE
高速アクセスのため、事前割り振り値のいくつかをメモリーに保管するかどうかを指定します。 これはパフォーマンスおよびチューニング・オプションです。 列はあらかじめ IDENTITY 属性で定義されていなければなりません (SQLSTATE 42837)。

CACHE integer-constant
事前割り振りされ、メモリーに保管される ID シーケンスの値の数を指定します。 識別列について値が生成される場合、値を事前割り振りしてキャッシュに保管しておくと、 ログへの非同期入出力が少なくなります。

識別列に新しい値が必要でも未使用の値がキャッシュにない場合、 値の割り振りはログへの入出力を待機しなければなりません。 ただし、識別列に新しい値が必要で、未使用の値がキャッシュにあれば、 その ID 値の割り振りが、ログへの入出力なしですばやく行われます。

データベース・マネージャーが停止 (たとえばデータベース非活動化、 システム障害、またはシャットダウン) すると、コミットされたステートメントで 使用されていないキャッシュ済みシーケンス値はすべて失われます (使用されなくなります)。 CACHE オプションに指定する値は、システム障害の際に失われても構わない識別列の値の最大数です。

最小値は 2 です (SQLSTATE 42615)。

NO CACHE
識別列の値が事前割り振りされないよう指定します。

このオプションが指定されると、識別列の値はキャッシュに保管されません。 この場合、新しい ID 値が要求されるたびに、ログに対して非同期入出力が行われます。

SET ORDER または NO ORDER
要求の順序で識別列の値が生成されるかどうかを指定します。 列はあらかじめ IDENTITY 属性で定義されていなければ なりません (SQLSTATE 42837)。

ORDER
要求の順序で識別列の値が生成されるよう指定します。

NO ORDER
要求の順序で識別列の値を生成する必要がないことを指定します。

38.5.5 複合 SQL (組み込み)

準備済み COMMIT ステートメントは、ATOMIC コンパウンド SQL ステートメントでは許可されていません。

38.5.6 複合ステートメント (動的)

複合ステートメント (動的)

複合ステートメントは、別のステートメントを実行可能ブロックにグループ化します。 動的準備済みアトミック複合ステートメントの内部で SQL 変数を宣言することができます。

呼び出し

このステートメントはトリガー、SQL 関数、または SQL メソッドに組み込むことができ、 また動的 SQL ステートメントの使用によって出すことができます。 動的に準備できる実行可能ステートメントです。

権限

動的複合ステートメントを呼び出すために、特権は必要ありません。 ただし、複合ステートメントの許可 ID に、複合ステートメントに組み込まれている SQL ステートメントを 呼び出すために必要な特権がなければなりません。

構文

dynamic-compound-statement
 
>>-+--------------+--BEGIN ATOMIC------------------------------->
   |        (1)   |
   '-label:-------'
 
>-----+-----------------------------------------------+--------->
      |  .-----------------------------------------.  |
      |  V                                         |  |
      '-----+-| SQL-variable-declaration |-+---;---+--'
            '-| condition-declaration |----'
 
      .-,-----------------------------.
      V                               |
>--------SQL-procedure-statement--;---+---END--+--------+------><
                                               '-label--'
 
SQL-variable-declaration
 
               .-,--------------------.
               V                      |
|---DECLARE-------SQL-variable-name---+--data-type-------------->
 
      .-DEFAULT NULL-------------.
>-----+--------------------------+------------------------------|
      '-DEFAULT--default-values--'
 
condition-declaration
 
|---DECLARE--condition-name--CONDITION--FOR--------------------->
 
                 .-VALUE-.
     .-SQLSTATE--+-------+---.
>----+-----------------------+---string-constant----------------|
 

注:

  1. ステートメントが関数、メソッド、またはトリガー定義にある場合のみ、ラベルを指定できます。

説明

label
コード・ブロックのラベルを定義します。 開始ラベルが指定されている場合、そのラベルを使用して動的複合ステートメントで 宣言されている SQL 変数を修飾、またラベルを LEAVE ステートメントに指定することもできます。 終了ラベルを指定する場合、そのラベルは開始ラベルと同じでなければなりません。

ATOMIC
ATOMIC は、複合ステートメントでエラーが起こった場合、その複合ステートメント 内の SQL ステートメントがすべてロールバックされ、残りの SQL ステートメントは 処理されないことを指示します。

SQL-procedure-statement
以下の SQL-control-statements は、動的複合ステートメントの 内部で使用できます。

出すことができる SQL ステートメントは以下の通りです。

SQL-variable-declaration
動的複合ステートメントに対してローカルである変数を宣言します。

SQL-variable-name
ローカル変数の名前を定義します。 DB2 は SQL 変数をすべて大文字に変換します。 以下のような名前にすることはできません。
  • 同じ複合ステートメント内の別の SQL 変数と同じ名前
  • パラメーター名と同じ名前
  • 列名と同じ名前

SQL 変数と同じ名前の ID、および列参照が SQL ステートメントに組み込まれている場合、 DB2 はその ID を列として解釈します。

data-type
変数のデータ・タイプを指定します。

DEFAULT default-values または NULL
SQL 変数のデフォルトを定義します。 動的複合ステートメントが呼び出されると、この変数は初期化されます。 デフォルト値が指定されていない場合、変数は NULL に初期化されます。

condition-declaration
条件名および対応する SQLSTATE 値を宣言します。

condition-name
条件の名前を指定します。条件名はプロシージャー本体内で固有でなければならず、 宣言された複合ステートメント内でのみ参照が可能です。

FOR SQLSTATE string-constant
条件に関連する SQLSTATE を指定します。 string-constant は引用符で囲んだ 5 文字で指定しなければなりませんが、 '00000' にすることはできません。

38.5.7 CREATE FUNCTION (ソースまたはテンプレート)

構文図を以下のように変更します。

>>-CREATE FUNCTION--function-name------------------------------->
 
>----(--+------------------------------------------+---)---*---->
        |  .-,----------------------------------.  |
        |  V                                    |  |
        '----+-----------------+---data-type1---+--'
             '-parameter-name--'
 
>----RETURNS--data-type2---*----+--------------------------+---->
                                '-SPECIFIC--specific-name--'
 
>----*---------------------------------------------------------->
 
>-----+-SOURCE--+-function-name--------------------------------+------------------+>
      |         +-SPECIFIC--specific-name----------------------+                  |
      |         '-function-name--(--+-------------------+---)--'                  |
      |                             |  .-,-----------.  |                         |
      |                             |  V             |  |                         |
      |                             '----data-type---+--'                         |
      |                   .-NOT DETERMINISTIC--.       .-EXTERNAL ACTION----.     |
      '-AS TEMPLATE--*----+--------------------+--*----+--------------------+--*--'
                          '-DETERMINISTIC------'       '-NO EXTERNAL ACTION-'
 
>----*---------------------------------------------------------><
 

「説明」セクションに以下の記述を追加します。

DETERMINISTIC  または  NOT DETERMINISTIC
このオプションの文節は、与えられた引き数値について常に関数が同じ結果を 返すかどうか (DETERMINISTIC)、または結果に影響する状態値に関数が依存するかどうか (NOT DETERMINISTIC) を 指定します。 つまり DETERMINISTIC 関数は、同一の入力で正しい呼び出しが行われたとき、 常に同じ表を返します。 同一の入力が常に同じ結果を作成するという利点を持つ最適化は、 NOT DETERMINISTIC を指定することによって妨げられます。

関数の本体が特殊レジスターにアクセス、または別の非 deterministic 関数を 呼び出す場合、NOT DETERMINISTIC を明示的または暗黙的に指定する必要が あります (SQLSTATE 428C2)。

NO EXTERNAL ACTION  または  EXTERNAL ACTION
このオプションの文節は、データベース・マネージャーによって管理されていない オブジェクトの状態を変更するアクションを関数が行うかどうかを指定します。 NO EXTERNAL ACTION の指定によって、関数に外部影響がないことを想定する、ある特定の 最適化をシステムは使用することができます。

関数の本体が外部アクションを持つ別の関数を呼び出す場合、EXTERNAL ACTION を 明示的または暗黙的に指定する必要があります (SQLSTATE 428C2)。

38.5.8 CREATE FUNCTION (SQL スカラー、表または行)

構文図を以下のように変更します。

>>-CREATE FUNCTION--function-name------------------------------->
 
>----(--+------------------------------------+---)---*---------->
        |  .-,----------------------------.  |
        |  V                              |  |
        '----parameter-name--data-type1---+--'
 
>----RETURNS--+-data-type2--------------------+--*-------------->
              '--+-ROW---+---| column-list |--'
                 '-TABLE-'
 
                                         .-LANGUAGE SQL--.
>-----+--------------------------+--*----+---------------+--*--->
      '-SPECIFIC--specific-name--'
 
      .-NOT DETERMINISTIC--.       .-EXTERNAL ACTION----.
>-----+--------------------+--*----+--------------------+--*---->
      '-DETERMINISTIC------'       '-NO EXTERNAL ACTION-'
 
      .-READS SQL DATA--.       .-STATIC DISPATCH--.
>-----+-----------------+--*----+------------------+--*--------->
      '-CONTAINS SQL----'
 
                              (1)
      .-CALLED ON NULL INPUT-------.
>-----+----------------------------+--*------------------------->
 
>-----+-----------------------------------------------------+--->
      |                                               (2)   |
      '-PREDICATES--(--| predicate-specification |--)-------'
 
>----| SQL-function-body |-------------------------------------><
 
column-list
 
       .-,--------------------------.
       V                            |
|---(-----column-name--data-type3---+---)-----------------------|
 
SQL-function-body
 
|---+-RETURN ステートメント------+------------------------------|
    '-dynamic-compound-statement-'
 

注:

  1. CALLED ON NULL INPUT の代わりに NULL CALL を指定することができます。

  2. RETURNS がスカラー結果を指定している (data-type2) 場合のみ有効です。

以下のパラメーターを変更します。

LANGUAGE SQL
関数が SQL によって作成されていることを指定します。

このパラメーター・セクションで "RETURN expression、NULL、WITH common-table-expression、 fullselect" パラメーター・セクションが置き換えられます。

SQL-function-body
関数の本体を指定します。 パラメーター名を SQL-function-body で参照することができます。 あいまい参照を避けるため、パラメーター名は関数名で修飾できます。

SQL-function-body が動的複合ステートメントであれば、 ここには少なくとも 1 つの RETURN ステートメントが組み込まれていなければならず、 また関数が呼び出されるときに RETURN ステートメントが実行されなければなりません (SQLSTATE 42632)。 関数が表または行関数であれば、動的複合ステートメントの最後の関数でなければ ならない RETURN ステートメントを 1 つだけ組み込むことができます (SQLSTATE 429BD)。

詳しくは 複合ステートメント (動的) および RETURN を参照してください。

38.5.9 CREATE METHOD

構文図を以下のように変更します。

CREATE METHOD

構文

>>-CREATE------------------------------------------------------->
 
>-----+-METHOD--+-method-name----------+---FOR--type-name--+---->
      |         '-| method-signature |-'                   |
      '-SPECIFIC METHOD--specific-name---------------------'
 
>-----+-*----EXTERNAL--+-----------------------+--*----+------------------------------+--*--+>
      |                '-NAME--+-'string'---+--'       '-TRANSFORM GROUP--group-name--'     |
      |                        '-identifier-'                                               |
      '-| SQL-method-body |-----------------------------------------------------------------'
 
>--------------------------------------------------------------><
 
method-signature
 
|---method-name--(--+---------------------------------------------------------+---)-->
                    |  .-,--------------------------------------------------. |
                    |  V                                                    | |
                    '----+-----------------+---data-type1--+-------------+--+-'
                         '-parameter-name--'               '-AS LOCATOR--'
 
>----+------------------------------------------------------------------+->
     '-RETURNS--+-data-type2--+-------------+------------------------+--'
                |             '-AS LOCATOR--'                        |
                '-data-type3--CAST FROM--data-type4--+-------------+-'
                                                     '-AS LOCATOR--'
 
>---------------------------------------------------------------|
 
SQL-method-body
 
|---+-RETURN ステートメント------+------------------------------|
    '-dynamic-compound-statement-'
 

以下のパラメーターで "RETURN scalar-expression または NULL" セクションが置き換えられます。

SQL-method-body
CREATE TYPE のメソッド仕様が LANGUAGE SQL の場合、SQL-method-body は、 どのようにメソッドがインプリメントされるかを定義します。

SQL-method-body は、以下のメソッド仕様のパーツにしたがっていなければなりません。

パラメーター名を SQL-method-body で参照することができます。 メソッドのサブジェクトは、暗黙的な最初のパラメーター SELF としてメソッド・インプリメンテーションに 渡されます。

詳しくは 複合ステートメント (動的) および RETURN を参照してください。

38.5.10 CREATE SEQUENCE

CREATE SEQUENCE

CREATE SEQUENCE ステートメントは、アプリケーション・サーバーでのシーケンスを作成します。

呼び出し

このステートメントはアプリケーション・プログラムに組み込むことができ、また 動的 SQL ステートメントの使用によって出すことができます。 動的に準備できる実行可能ステートメントです。 ただし、バインド・オプション DYNAMICRULES BIND が適用されている場合、 ステートメントを動的に準備することはできません (SQLSTATE 42509)。

権限

ステートメントの許可 ID によって保持されている特権には、少なくとも以下のいずれかが 含まれていなければなりません。

構文

                                         .-AS INTEGER-----.
>>-CREATE SEQUENCE--sequence-name---*----+----------------+--*-->
                                         '-AS--data-type--'
 
>-----+-------------------------------+--*---------------------->
      '-START WITH--numeric-constant--'
 
      .-INCREMENT BY 1------------------.
>-----+---------------------------------+--*-------------------->
      '-INCREMENT BY--numeric-constant--'
 
                    (1)
      .-NO MINVALUE-----------------.
>-----+-----------------------------+--*------------------------>
      '-MINVALUE--numeric-constant--'
 
      .-NO MAXVALUE-----------------.       .-NO CYCLE--.
>-----+-----------------------------+--*----+-----------+--*---->
      '-MAXVALUE--numeric-constant--'       '-CYCLE-----'
 
      .-CACHE 20-----------------.       .-NO ORDER--.
>-----+--------------------------+--*----+-----------+--*------><
      +-CACHE--integer-constant--+       '-ORDER-----'
      '-NO CACHE-----------------'
 

注:

  1. パラメーター NOMINVALUE、NOMAXVALUE、NOCYCLE、NOCACHE、および NOORDER は、 スペースなしで指定することができます。 これらの単一ワード・バージョンはすべて、2 ワード・バージョンに代わって受け入れられます。

説明

sequence-name
シーケンスを指定します。 名前の組み合わせ、また暗黙および明示スキーマ名は、 現在のサーバーに存在するシーケンスを識別することはできません (SQLSTATE 42710)。

sequence-name の非限定フォームは SQL ID です。 限定フォームは、ピリオドと SQL ID が後ろに続く修飾子です。 修飾子はスキーマ名です。

シーケンス名がスキーマ名で明示的に限定されている場合、 そのスキーマ名の先頭を 'SYS' にすると、エラーが起こります (SQLSTATE 42939)。

AS data-type
シーケンス値に使用されるデータ・タイプを指定します。 データ・タイプは、ゼロの位取りの整数値タイプ (SMALLINT、INTEGER、BIGINT、または DECIMAL) か、 ソース・タイプがゼロの位取りの整数値タイプであるユーザー定義の特殊タイプにすることができます。 デフォルトは INTEGER です。

START WITH numeric-constant
シーケンスの最初の値を指定します。 この値は、小数点の右側に非ゼロの数字がない (SQLSTATE 428FA) かぎり、シーケンスに関連する データ・タイプの列に割り当てることができる正または負の値にすることができます (SQLSTATE 42820)。 デフォルトは、昇順シーケンスであれば MINVALUE、降順シーケンスであれば MAXVALUE です。

シーケンスの最大または最小値に達した後、そのシーケンスが循環する 値である必要はありません。 START WITH 文節を使用して、循環に使用される範囲外のシーケンスを開始することができます。 循環に使用される範囲は、MINVALUE および MAXVALUE によって定義されています。

INCREMENT BY numeric-constant
シーケンスの連続値の間隔を指定します。 この値は、小数点の右側に非ゼロの数字がない (SQLSTATE 428FA) かぎり、シーケンスに関連する データ・タイプの列に割り当てることができる正または負の値にすることができ (SQLSTATE 42820)、 長精度整数定数の値を超えることはありません (SQLSTATE 42815)。

この値が負の場合、値のシーケンスは下降します。 正であれば、値のシーケンスは上昇します。 値がゼロ、または MINVALUE および MAXVALUE に定義されている範囲よりも大きい場合、 生成される値は 1 つだけですが、そうでなければシーケンスは昇順シーケンスとして 扱われます。 デフォルトは 1 です。

MINVALUE または NO MINVALUE
降順シーケンスが値の生成を循環または停止する最小値、あるいは最大値に達した後、 昇順シーケンスが循環する最小値を指定します。

MINVALUE numeric-constant
最小値である数値定数を指定します。 この値は、小数点の右側に非ゼロの数字がない (SQLSTATE 428FA) かぎり、シーケンスに関連する データ・タイプの列に割り当てることができる正または負の値にすることができます (SQLSTATE 42820) が、 最大値以下でなければなりません (SQLSTATE 42815)。

NO MINVALUE
昇順シーケンスの場合、値は START WITH 値、また START WITH が指定されていなければ 1 です。 降順シーケンスの場合、シーケンスに関連するデータ・タイプの最小値です。 これがデフォルトです。

MAXVALUE または NO MAXVALUE
昇順シーケンスが値の生成を循環または停止する最大値、あるいは最小値に達した後、 降順シーケンスが循環する最大値を指定します。

MAXVALUE numeric-constant
最大値である数値定数を指定します。 この値は、小数点の右側に非ゼロの数字がない (SQLSTATE 428FA) かぎり、シーケンスに関連する データ・タイプの列に割り当てることができる正または負の値にすることができます (SQLSTATE 428FA) が、 最小値以上でなければなりません (SQLSTATE 42815)。

NO MAXVALUE
昇順シーケンスの場合、値はシーケンスに関連するデータ・タイプの最大値です。 降順シーケンスの場合、START WITH 値、また START WITH が指定されていなければ -1 です。 これがデフォルトです。

CYCLE または NO CYCLE
その最大値または最小値に達した後、シーケンスが値の生成を続行するかどうかを指定します。 次の値が境界条件を正確に満たしたとき、またはその値を超えることによって、 シーケンスの境界に達します。

CYCLE
最大値または最小値に達した後、このシーケンスについて値の生成が続行されるかどうかを指定します。 このオプションが使用されると、昇順シーケンスが最大値に達した後、その最小値が生成されます。 降順シーケンスが最小値に達した後、その最大値が生成されます。 シーケンスの最大値および最小値は、循環に使用される範囲を決定します。

CYCLE が有効であれば、シーケンスについて重複する値が生成される場合があります。

NO CYCLE
シーケンスの最大値または最小値に達した後、そのシーケンスについて値が生成されないことを 指定します。 これがデフォルトです。

CACHE または NO CACHE
高速アクセスのため、事前割り振り値のいくつかをメモリーに保管するかどうかを指定します。 これはパフォーマンスおよびチューニング・オプションです。

CACHE integer-constant
事前割り振りされ、メモリーに保管されるシーケンス値の最大数を指定します。 値を事前割り振りしてキャッシュに保管しておくと、シーケンスのために値を生成するとき、 ログへの非同期入出力が少なくなります。

システム障害が起こると、コミットされたステートメントで使用されていない キャッシュ済みシーケンス値はすべて失われます (使用されなくなります)。 CACHE オプションに指定する値は、システム障害の際に失われても構わないシーケンス値の 最大数です。

最小値は 2 です (SQLSTATE 42815)。 デフォルト値は CACHE 20 です。

NO CACHE
シーケンスの値が事前割り振りされないよう指定します。 システム障害、シャットダウン、またはデータベース非活動化の際、 値が失われることはありません。 このオプションが指定されると、シーケンスの値はキャッシュに保管されません。 この場合、シーケンスの新しい値が要求されるたびに、ログに対して非同期入出力が行われます。

NO ORDER または ORDER
要求の順序でシーケンス番号が生成されるかどうかを指定します。

ORDER
要求の順序でシーケンス番号が生成されるよう指定します。

NO ORDER
要求の順序でシーケンス番号を生成する必要がないことを指定します。 これがデフォルトです。

例 1 : シーケンス org_seq を作成

   CREATE SEQUENCE org_seq
   START WITH 1
   INCREMENT BY 1
      NO MAXVALUE
      NO CYCLE
      CACHE 24

38.5.11 CREATE TRIGGER

CREATE TRIGGER

構文

>>-CREATE TRIGGER--trigger-name----+-NO CASCADE BEFORE-+-------->
                                   '-AFTER-------------'
 
>-----+-INSERT-----------------------------+--ON--table-name---->
      +-DELETE-----------------------------+
      '-UPDATE--+------------------------+-'
                |    .-,--------------.  |
                |    V                |  |
                '-OF----column-name---+--'
 
>-----+----------------------------------------------------------------------+>
      |              .----------------------------------------------------.  |
      |              V   (1)    (2)          .-AS-.                       |  |
      '-REFERENCING-------------------+-OLD--+----+--correlation-name--+--+--'
                                      |     .-AS-.                     |
                                      +-NEW-+----+--correlation-name---+
                                      |           .-AS-.               |
                                      +-OLD_TABLE-+----+--identifier---+
                                      |           .-AS-.               |
                                      '-NEW_TABLE-+----+--identifier---'
 
>-----+-FOR EACH ROW---------------+--MODE DB2SQL--------------->
      |  (3)                       |
      '--------FOR EACH STATEMENT--'
 
>-----| triggered-action |-------------------------------------><
 
triggered-action
 
|--+-------------------------------+--SQL-procedure-statement---|
   '-WHEN--(--search-condition--)--'
 

注:

  1. OLD および NEW は、それぞれ一度だけ指定できます。

  2. OLD_TABLE および NEW_TABLE はそれぞれ一度だけ、AFTER トリガーにのみ指定できます。

  3. FOR EACH STATEMENT を BEFORE トリガーに指定することはできません。

以下の文章で "triggered-action" の説明を置き換えます。

triggered-action
トリガーを活動化するときに実行されるアクションを指定します。 triggered-action は SQL-procedure-statement、および SQL-procedure-statement 実行の オプション条件から構成されています。

WHEN (search-condition)
真、偽、または不明である条件を指定します。 search-condition によって、あるトリガー処置を実行すべきかどうかを 決定する機能が与えられます。

関連するアクションは、指定された検索条件が真である場合のみ実行されます。 WHEN 文節が省略されると、関連する SQL-procedure statement が常に実行されます。

SQL-procedure-statement
SQL-procedure-statement に動的複合ステートメント、 または 複合ステートメント (動的) にリストされている SQL ステートメントのいずれかを 組み込むことができます。

トリガーが BEFORE トリガーであれば、 SQL-procedure-statement に fullselect または SET 変数ステートメントを組み込むこともできます (SQLSTATE 42987)。

トリガーが AFTER トリガーであれば、SQL-procedure-statement に以下の いずれかを組み込むこともできます (SQLSTATE 42987)。

SQL-procedure-statement は、未定義の変換変数 (SQLSTATE 42703) または 宣言された一時表 (SQLSTATE 42995) を参照できません。

BEFORE トリガーの SQL-procedure-statement は、REFRESH IMMEDIATE で 定義された一時表を参照できません (SQLSTATE 42997)。

BEFORE トリガーの SQL-procedure-statement は、新しい変換変数で識別列以外の 生成済み列を参照できません (SQLSTATE 42989)。

「注」セクションを以下のように変更します。

38.5.12 CREATE WRAPPER

Linux は、LIBDRDA.SO および LIBSQLNET.SO という ライブラリーを使用します。 LIBDRDA.A および LIBSQLNET.A は使用しません。

38.5.13 DECLARE CURSOR

「注」セクションの終わり近くの "DECLARE CURSOR" ステートメント内の 次の文を変更します。 変更前の文:

BLOCKING バインド・オプションが ALL の場合、未確定カーソルは読み取り専用と 見なされます。それ以外の場合、未確定カーソルは削除可能と見なされます。

変更後の文:

BLOCKING バインド・オプションが ALL の場合、未確定カーソルは読み取り専用と 見なされます。それ以外の場合、未確定カーソルは更新可能と見なされます。

「"削除可能"」という語が「"更新可能"」という語に変更されています。

38.5.14 DELETE

探索条件付き DELETE 構文図を以下のように変更します。

>>-DELETE FROM----+-table-name-------------------+-------------->
                  +-view-name--------------------+
                  '-ONLY--(--+-table-name-+---)--'
                             '-view-name--'
 
>-----+---------------------------+----------------------------->
      | .-AS-.                    |
      '-+----+--correlation-name--'
 
>-----+--------------------------+---+---------------+---------><
      '-WHERE--search-condition--'   '-WITH--+-RR-+--'
                                             +-RS-+
                                             +-CS-+
                                             '-UR-'
 

位置指定 DELETE:

>>-DELETE FROM----+-table-name-------------------+-------------->
                  +-view-name--------------------+
                  '-ONLY--(--+-table-name-+---)--'
                             '-view-name--'
 
>----WHERE CURRENT OF--cursor-name-----------------------------><
 

説明セクションに以下の記述を追加します。

WITH
削除する行を検索しているときに使用される分離レベルを指定します。

RR
反復可能読み取り

RS
読み取り固定

CS
カーソル固定

UR
アンコミット読み取り

ステートメントのデフォルト分離レベルは、ステートメントがバインドされている パッケージの分離レベルです。

38.5.15 DROP

以下のオプションを追加します。

>>-SEQUENCE--sequence-name--RESTRICT---------------------------><
 

以下のパラメーターを追加します。

SEQUENCE sequence-name RESTRICT

ドロップする特定のシーケンスを識別します。 暗黙的または明示的スキーマ名を含む sequence-name は、 現在のサーバーに存在するシーケンスを固有に識別していなければなりません。 この名前によるシーケンスが、明示的または暗黙的に指定されたスキーマに存在しない場合、 エラー (SQLSTATE 42704) が起こります。

RESTRICT キーワードは、表列の定義がシーケンスを (IDENTITY 列を経由して) 参照している場合、 そのシーケンスはドロップされないという規則を強制します。

注:

オブジェクトが相互に持っている従属関係を示す表を、次のように更新しなければなりません。

新しい行: DROP SEQUENCE 新しい行 "DROP SEQUENCE" と列 "PACKAGE" の交点にある 項目は "A" になります。 この新しい行の残りの項目は "-" になります。

38.5.16 GRANT (シーケンス特権)

GRANT (シーケンス特権)

この GRANT ステートメントのフォームは、ユーザー定義シーケンスでの特権を付与します。

呼び出し

このステートメントはアプリケーション・プログラムに組み込むことができ、また 動的 SQL ステートメントの使用によって出すことができます。 動的に準備できる実行可能ステートメントです。 ただし、バインド・オプション DYNAMICRULES BIND が適用されている場合、 ステートメントを動的に準備することはできません (SQLSTATE 42509)。

権限

ステートメントの許可 ID によって保持されている特権には、 少なくとも以下のいずれかが含まれていなければなりません。

構文

>>-GRANT--USAGE--ON SEQUENCE--sequence-name--TO PUBLIC---------><
 

説明

USAGE
シーケンスの USAGE 特権を付与します。

ON SEQUENCE sequence-name
USAGE 特権が付与されるシーケンスを識別します。 暗黙的または明示的スキーマ修飾子を含む sequence-name は、 現在のサーバーに存在するシーケンスを固有に識別していなければなりません。 この名前によるシーケンスが指定されたスキーマに存在しない場合、エラー (SQLSTATE 42704) が 起こります。

TO PUBLIC
すべてのユーザーに USAGE 特権を付与します。

例 1:   シーケンス MYNUM での特権をユーザーに付与

   GRANT USAGE ON SEQUENCE MYNUM TO PUBLIC
    

38.5.17 INSERT

構文図を以下のように変更します。

>>-INSERT INTO----+-table-name-+-------------------------------->
                  '-view-name--'
 
>-----+----------------------------+---------------------------->
      |    .-,--------------.      |
      |    V                |      |
      '-(-----column-name---+---)--'
 
                .-,---------------------------------.
                V                                   |
>-----+-VALUES------+-+-------+----------------+--+-----------+>
      |             | +-NULL----+                |              |
      |             | '-DEFAULT-'                |              |
      |             |    .-,--------------.      |              |
      |             |    V                |      |              |
      |             '-(------+-------+--+---)--'              |
      |                      +-NULL----+                        |
      |                      '-DEFAULT-'                        |
      '-+---------------------------------------+---fullselect--'
        |       .-,--------------------------.  |
        |       V                            |  |
        '-WITH-----common-table-expression---+--'
 
>-----+---------------+----------------------------------------><
      '-WITH--+-RR-+--'
              +-RS-+
              +-CS-+
              '-UR-'
 

説明セクションに以下の記述を追加します。

WITH
fullselect が実行される分離レベルを指定します。

RR
反復可能読み取り

RS
読み取り固定

CS
カーソル固定

UR
アンコミット読み取り

ステートメントのデフォルト分離レベルは、ステートメントがバインドされている パッケージの分離レベルです。

38.5.18 SELECT INTO

構文図を以下のように変更します。

                          .-,----------------.
                          V                  |
>>-select-clause--INTO-------host-variable---+--from-clause----->
 
>----+--------------+--+-----------------+--+---------------+--->
     '-where-clause-'  '-group-by-clause-'  '-having-clause-'
 
>-----+---------------+----------------------------------------><
      '-WITH--+-RR-+--'
              +-RS-+
              +-CS-+
              '-UR-'
 

説明セクションに以下の記述を追加します。

WITH
SELECT INTO ステートメントが実行される分離レベルを指定します。

RR
反復可能読み取り

RS
読み取り固定

CS
カーソル固定

UR
アンコミット読み取り

ステートメントのデフォルト分離レベルは、ステートメントがバインドされている パッケージの分離レベルです。

38.5.19 SET ENCRYPTION PASSWORD

SET ENCRYPTION PASSWORD

SET ENCRYPTION PASSWORD ステートメントは、暗号化および暗号化解除関数によって 使用されるパスワードを設定します。 このパスワードは DB2 認証には関連付けられず、データ暗号化にのみ使用されます。

このステートメントは、トランザクション制御のもとにはありません。

呼び出し

このステートメントはアプリケーション・プログラムに組み込むことができ、また 対話式に出すことができます。 動的に準備できる実行可能ステートメントです。

権限

このステートメントを実行するために、許可は必要ありません。

構文

                             .-=-.
>>-SET--ENCRYPTION PASSWORD--+---+--+-host-variable---+--------><
                                    '-string-constant-'
 

説明

ENCRYPTION PASSWORD は、パスワード・ベースの暗号化のための ENCRYPT、DECRYPT_BIN、 および DECRYPT_CHAR 組み込み関数で使用できます。 長さは 6 と 127 の間でなければなりません。 大文字変換は行われないため、文字はすべて大文字小文字を区別して指定しなければ なりません。

host-variable
タイプ CHAR または VARCHAR の変数です。 host-variable の長さは 6 と 127 の間でなければなりません (SQLSTATE 428FC)。 ヌルに設定することはできません。 大文字変換は行われないため、文字はすべて大文字小文字を区別して指定しなければ なりません。

string-constant
文字ストリング定数です。 長さは 6 と 127 の間でなければなりません (SQLSTATE 428FC)。

規則

例 1:   次のステートメントは ENCRYPTION PASSWORD を設定します。

   SET ENCRYPTION PASSWORD = 'bubbalu'

38.5.20 SET transition-variable

このセクションを以下のように変更します。

SET 変数

SET 変数ステートメントは、ローカル変数または新しい変換変数に値を割り当てます。 これは、トランザクション制御のもとにあります。

呼び出し

このステートメントは、動的複合ステートメント、トリガー、SQL 関数または SQL メソッドの いずれかで SQL ステートメントとしてのみ使用できます。

権限

変換変数を参照するには、トリガー作成者の許可 ID によって保持されている特権には、 少なくとも以下のいずれかが含まれていなければなりません。

割り当ての右側として row-fullselect を持っている このステートメント実行するには、トリガー定義者または動的複合ステートメント所有者の いずれかの許可 ID によって保持されている特権には、参照されている表または視点 それぞれについて、少なくとも以下のいずれかも含まれていなければなりません。

構文

>>-SET---------------------------------------------------------->
 
      .-,----------------------------------------------------------------------------.
      V                                                                              |
>--------+-| target-variable |--=--+-------+------------------------------------+--+>
         |                         +-NULL----+                                    |
         |                         '-DEFAULT-'                                    |
         |    .-,----------------------.               .-,------------.           |
         |    V                        |               V      (1)     |           |
         '-(-----| target-variable |---+---)--=--(--+----+-------+--+----+---)--'
                                                    |    +-NULL----+       |
                                                    |    '-DEFAULT-'       |
                                                    |                (2)   |
                                                    '-row-fullselect-------'
 
>--------------------------------------------------------------><
 
target-variable
 
|---+-SQL-variable-name--------+---+--------------------------+-|
    '-transition-variable-name-'   |  .--------------------.  |
                                   |  V                    |  |
                                   '----..attribute-name---+--'
 

注:

  1. 式の数、NULL および DEFAULT は target-variable の 数に一致していなければなりません。

  2. 選択リストの列の数は、target-variable の数に一致していなければなりません。

説明

target-variable
割り当てのターゲット変数を識別します。 同じ変数を表す target-variable を複数指定することはできません (SQLSTATE 42701)。

SQL-variable-name
割り当てターゲットである SQL 変数を識別します。 SQL 変数は、使用する前に宣言しておかなければなりません。 SQL 変数を動的複合ステートメントに定義することができます。

transition-variable-name
変換行で更新する列を識別します。 transition-variable-name は、新しい値を識別する相関名によってオプションで修飾されている、 トリガーのサブジェクト表にある列を識別していなければなりません (SQLSTATE 42703)。

..attribute name
設定されている構造化タイプの属性 (属性割り当て ) を指定します。 指定する SQL-variable-nameor transition-variable-name は、 ユーザー定義の構造化タイプで定義されていなければなりません (SQLSTATE 428DP)。 attribute-name は、構造化タイプの属性でなければなりません。 ..attribute name 文節を必要としない割り当ては、 従来型割り当てと呼ばれます。

expression
target-variable の新しい値を指示します。 expression は、SQL 解説書の第 2 章で説明されている、どのタイプの式でも構いません。 スカラー fullselect で使用される場合を除き、列関数を組み込むことはできません (SQLSTATE 42903)。 CREATE TRIGGER ステートメントのコンテキストにおいて、 expression は OLD および NEW 変換変数への参照を含むことができ、 変換変数を指定するためには correlation-name で修飾されていなければ なりません (SQLSTATE 42702)。

NULL
NULL 値を指定します。NULL 可能列にのみ指定することができます (SQLSTATE 23502)。 属性のデータ・タイプに特定して cast されていないかぎり、NULL を属性割り当ての 値にすることはできません (SQLSTATE 429B9)。

DEFAULT
デフォルト値が使用されることを指定します。

target-variable が列であれば、挿入される値は、どのように列が 表に定義されているかによって異なります。

target-variable が SQL 変数であれば、挿入される値は、 変数宣言に指定または暗黙指定されているデフォルトになります。

row-fullselect
割り当てに指定されている target-variables の数に対応する列数とともに、 単一行を返す fullselect です。 値は、対応する target-variable それぞれに割り当てられます。 row-fullselect の結果が行なしであれば、NULL 値が割り当てられます。 CREATE TRIGGER ステートメントのコンテキストにおいて、 row-fullselect は、使用する変換変数を指定する ために correlation-name で修飾されていなければならない、 OLD および NEW 変換変数への参照を含むことができます (SQLSTATE 42702)。 結果に行が複数ある場合、エラーが返されます (SQLSTATE 21000)。

規則

このステートメントの例に変更はありません。

38.5.21 UPDATE

探索条件付き UPDATE 構文図を以下のように変更します。

>>-UPDATE----+-table-name-------------------+------------------->
             +-view-name--------------------+
             '-ONLY--(--+-table-name-+---)--'
                        '-view-name--'
 
>-----+---------------------------+----------------------------->
      | .-AS-.                    |
      '-+----+--correlation-name--'
 
>-----SET--| assignment-clause |-------------------------------->
 
>-----+--------------------------+---+---------------+---------><
      '-WHERE--search-condition--'   '-WITH--+-RR-+--'
                                             +-RS-+
                                             +-CS-+
                                             '-UR-'
 

説明セクションに以下の記述を追加します。

WITH
UPDATE ステートメントが実行される分離レベルを指定します。

RR
反復可能読み取り

RS
読み取り固定

CS
カーソル固定

UR
アンコミット読み取り

ステートメントのデフォルト分離レベルは、ステートメントがバインドされている パッケージの分離レベルです。


脚注:

6
common-table-expression が fullselect に先行する場合があります。

7
common-table-expression が fullselect に 先行することがあります。

8
計算の前に、前の値がソース・タイプに cast されることはありません。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]