TRUNCATE TABLE 代替セマンティクス
• この この この この機能 機能 機能 機能を を を を有効 有効 有効 有効にすると にすると にするとTRUNCATE TABLE文 にすると 文 文 文の の の の以下 以下 以下 以下の の の2 の 2 2 2つの つの つの つの動作 動作 動作が 動作 が が が変 変 変 変わる わる わる わる 1. IMMEDIATE キーワードが必須ではなくなり、以下のような呼び出しが可能
• TRUNATE TABLE テーブル テーブル テーブル テーブル名 名 名 名
2.トランザクション中でも TRUNCATE TABLE 文実行前に暗黙的なコミットが行われ、
TRUNCATE TABLE 文が実行される
• この機能が無効の場合には、トランザクション中に TRUNCATE TABLE を発行するとエラーと なる( SQL0428N )
.-TABLE-. .-DROP STORAGE--.
>>-TRUNCATE--+---+--table-name--+---+--->
'-REUSE STORAGE-' .-IGNORE DELETE TRIGGERS---.
>--+---+--->
'-RESTRICT WHEN DELETE TRIGGERS-' .-CONTINUE IDENTITY-.
>--+---+--IMMEDIATE---><
TRUNCATE TABLE構文
IMMEDIATE キーワード
TRUNCATE TABLE 実行例
C:¥>db2 truncate table t1
DB21034E コマンドが、有効なコマンド行プロセッサー・コマ ンドでないため、 SQLステートメントとして処理されました。
SQL 処理中に、そのコマンドが返されました。
SQL0104N "truncate table T1"
SQL0104N "truncate table T1" SQL0104N "truncate table T1"
SQL0104N "truncate table T1" ににに続に続続いて続いていて予期いて予期予期しない予期しないしないトークンしないトークントークントークン
"END
"END"END
"END----OFOFOF-OF---STATEMENT"STATEMENT"STATEMENT"がSTATEMENT"がが見が見見つかりました見つかりましたつかりました。つかりました。。予期。予期予期された予期されたされたトークンされたトークントークンにトークンににに
"
""
"IMMEDIATE
IMMEDIATE IMMEDIATE" IMMEDIATE
"""ががが含が含含まれている含まれているまれている可能性まれている可能性可能性があります可能性がありますがあります。があります。。。 SQLSTATE=42601SQLSTATE=42601SQLSTATE=42601 SQLSTATE=42601
C:¥>db2 truncate table t1 immediate
DB20000I SQL コマンドが正常に完了しました。
C:¥>db2 +c insert into t1 values (1,1)
DB20000I SQL コマンドが正常に完了しました。
C:¥>db2 truncate table t1 immediate
DB21034E コマンドが、有効なコマンド行プロセッサー・コマ ンドでないため、 SQLステートメントとして処理されました。
SQL 処理中に、そのコマンドが返されました。
SQL0428N SQL SQL0428N SQL SQL0428N SQL
SQL0428N SQL ステートメントステートメントステートメントはステートメントはは、は、、作業単位、作業単位作業単位の作業単位のの最初の最初最初の最初ののステートのステートステートステート メント
メントメント
メントとしてのみとしてのみとしてのみ許可としてのみ許可許可され許可されされされ ていますていますています
ています。。。。 SQLSTATE=25001SQLSTATE=25001SQLSTATE=25001SQLSTATE=25001 C:¥>db2 truncate table t1
DB20000I SQL コマンドが正常に完了しました。
C:¥>db2 +c insert into t1 values (1,1)
DB20000I SQL コマンドが正常に完了しました。
C:¥>db2 truncate table t1
DB20000I SQL コマンドが正常に完了しました。
ON OFF
トランザクション 中でも実行可能
IMMEDIATE
が必須のキー ワードのため文法エラートランザクション中に実行すると
SQL0428
エラー でステートメントは失敗するDB2_COMPATIBILITY_VECTOR=080 の場合 DB2_COMPATIBILITY_VECTOR 設定なしの場合
文字リテラルの互換性
• バイト バイト バイト バイト長 長 長 長が が が が 254 以下 以下である 以下 以下 である である文字定数 である 文字定数 文字定数および 文字定数 および および および GRAPHIC ストリング ストリング定数 ストリング ストリング 定数 定数 定数に に に に、 、 、 、 CHAR データ データ・ データ データ ・・ ・タ タ タ タ イプ
イプ イプ
イプまたは または または または GRAPHIC データ データ・ データ データ ・・ ・タイプ タイプ タイプ タイプ (VARCHAR データ データ データ データ・ ・・ ・タイプ タイプ タイプ タイプでも でも でも でも VARGRAPHIC デー デー デー デー タ タ
タ タ・ ・・ ・タイプ タイプ タイプでもない タイプ でもない でもない でもない ) を を を を割 割 割り 割 り り り当 当 当 当てることを てることを てることを可能 てることを 可能 可能 可能にします にします にします にします。 。 。 。
• DB2_COMPATIBILITY_VECTOR=100 でこの でこの機能 でこの でこの 機能 機能 機能を を を を有効 有効 有効にします 有効 にします にします にします
• データベース作成後でも有効にできます
PL/SQL のコンパイル 12 (0x800)
データ・ディクショナリー互換ビュー 11 (0x400)
コレクション・メソッド 10 (0x200)
文字リテラル 9 (0x100)
TRUNCATE TABLE 8 (0x80)
DATE データ・タイプ 7 (0x40)
VARCHAR2 データ・タイプ 6 (0x20)
NUMBER データ・タイプ 5 (0x10)
階層照会 4 (0x08)
外部結合演算子 3 (0x04)
未使用 2 (0x02)
ROWNUM 1 (0x01)
互換性フィーチャー
ビット位置
文字リテラルの互換性
• 254 文字以下 文字以下 文字以下 文字以下の の の の文字 文字 文字 文字リテラル リテラル リテラル リテラルを を を を CHAR として として として として扱 扱 扱 扱う う う。 う 。 。 。
• Oracle では、文字リテラルは CHAR として扱われる
• Oracle でも CHAR の比較は空白埋め比較セマンティクスが使用される
C:¥>db2 describe values 'A' 列情報
列の数: 1
SQL タイプ タイプ長 列名 名前長
--- --- --- ---452 CHARACTER 1 1 1
C:¥>db2 "select 'TRUE' from dual where 'A' = 'A '"
1 ----TRUE
1 レコードが選択されました。
VARCHAR2データ
データデータデータ・・・・タイプタイプタイプのタイプののの互換性互換性互換性互換性=ON またはまたはまたはまたは 文字
文字文字
文字リテラルリテラルリテラルのリテラルのの互換性の互換性互換性=ON互換性
C:¥>db2 describe values 'A' 列情報
列の数: 1
SQL タイプ タイプ長 列名 名前長
--- --- --- ---448 VARCHAR 1 1 1
C:¥>db2 "select 'TRUE' from sysibm.sysdummy1 where 'A'
= 'A '"
1 ----TRUE
1 レコードが選択されました。
VARCHAR2データ
データデータ・データ・・・タイプタイプタイプタイプののの互換性の互換性互換性=OFF互換性リテラルのタイプはCHAR リテラルのタイプは
VARCHAR
コレクション・メソッド
• 配列 配列 配列 配列で で で で first 、 、 、 、 last 、 、 、 、 next 、 、 、 、 previous などの などの などの などの演算 演算 演算を 演算 を を を実行 実行 実行 実行する する する するメソッド メソッド メソッドの メソッド の の使用 の 使用 使用 使用を を を を可能 可能 可能にします 可能 にします にします。 にします 。 。 。 また
また また
また、 、 、配列内 、 配列内 配列内の 配列内 の の の特定 特定 特定の 特定 の の要素 の 要素 要素 要素の の の の参照 参照 参照に 参照 に に、 に 、 、 、大括弧 大括弧 大括弧 大括弧の の の の代 代 代 代わりに わりに わりに わりに括弧 括弧 括弧 括弧を を を を使用 使用 使用 使用できるようにします できるようにします できるようにします できるようにします。 。 。 。例 例 例 例 えば えば
えば えば、 、 、 、 array1(i) は は は は array1 の の要素 の の 要素 要素 要素 i を を を を参照 参照 参照 参照します します します します。 。 。 。
• DB2_COMPATIBILITY_VECTOR=200 でこの でこの機能 でこの でこの 機能 機能 機能を を を を有効 有効 有効にします 有効 にします にします にします
• データベース作成後でも有効にできます
PL/SQL のコンパイル 12 (0x800)
データ・ディクショナリー互換ビュー 11 (0x400)
コレクション・メソッド 10 (0x200)
文字リテラル 9 (0x100)
TRUNCATE TABLE 8 (0x80)
DATE データ・タイプ 7 (0x40)
VARCHAR2 データ・タイプ 6 (0x20)
NUMBER データ・タイプ 5 (0x10)
階層照会 4 (0x08)
外部結合演算子 3 (0x04)
未使用 2 (0x02)
ROWNUM 1 (0x01)
互換性フィーチャー
ビット位置
コレクション・メソッド
•
PL/SQL コレクションコレクションコレクションコレクション とはとはとはとは• 同じデータ・タイプを持つ、配列されたデータ・エレメントの集合。その集合内の個々のデータ項目を、括弧を使用した添字表 記法を使用して参照できます。
•
VARRAY、連想配列
•
コレクションメソッドコレクションメソッドコレクションメソッドコレクションメソッド• コレクションの情報を参照したり、変更を行う機能
• 以下のようなメソッドがあります。
コレクションの末尾から、エレメントを n 個削除します。連想配列コレクション・タイプからエレメントをトリムすることはできません。
TRIM (n)
コレクションの末尾から、エレメントを 1 つだけ削除します。連想配列コレクション・タイプからエレメントをトリムすることはできません。
TRIM
指定したエレメントの直前に位置するエレメントの索引番号を返します。
PRIOR (n)
指定したエレメントの直後に位置するエレメントの索引番号を返します。
NEXT (n)
VARRAY の場合にはエレメントの最大数、ネストした表の場合には NULL を返します。
LIMIT
コレクション内にある最大の索引番号を返します。
LAST
コレクション内にある最小の索引番号を返します。
FIRST
コレクションに、n2 番目のエレメントのコピーを n1 個付加します。
EXTEND (n1, n2)
コレクションに NULL エレメントを n 個付加します。
EXTEND (n)
コレクションに NULL エレメントを 1 つだけ付加します。
EXTEND
指定したエレメントが存在する場合は、TRUE を返します。
EXISTS (n)
n1 から n2 までのエレメントすべてを、連想配列から削除します。 VARRAY コレクション・タイプから個々のエレメントを削除することはできません。
DELETE (n1, n2)
連想配列からエレメント n を削除します。 VARRAY コレクション・タイプから個々のエレメントを削除することはできません。
DELETE (n)
コレクションからすべてのエレメントを削除します。
DELETE
コレクション内のエレメントの数を返します。
COUNT
説明 コレクション・メソッド