• 検索結果がありません。

DB2_DEFERRED_PREPARE_SEMANTICS=NO deferPrepares=true

この二つのパラメーターが設定されている場合には、パラメーター・マーカーの入 力値から、データタイプが判別されて、SQLの実行が成功します。

DB2_DEFERRED_PREPARE_SEMANTICS=YES deferPrepares=false

deferPrepares=falseによりPrepareが先に行われるためパラメーター・マーカーの入

力値が使用できずエラーとなります

DB2_DEFERRED_PREPARE_SEMANTICS=NO deferPrepares=true

パラメーター・マーカーの入力値からのデータタイプ判別が行われずエラーとなります

OK OK

エラーエラー エラーエラー

エラー エラー エラー エラー

Public Synonym ( ALIAS の機能拡張)

V9.7から から から から

• Public Alias を使用できる

• スキーマなしでの呼び出しで CURRENT SCHEMA と関係なくオブジェクトの参照 が可能

• 1 ステートメント( CREATE PUBLIC ALIAS )で全てのユーザーにオブジェクトが公 開できる

• Alias を付けられるオブジェクトが増えた

• Alias (Private または Public) 、ニックネーム、モジュール、シーケンス、表、ビュー

• CREATE [ PUBLIC ] SYNONYM 文を使用して作成可能

V9.5 まで まで まで まで

• Private Alias のみ使用可能

• Alias を付けられるオブジェクト

• 他の Private Alias 、ニックネーム、表、またはビューに対して別名を定義可能

V9.7 New

Public Synonym ( Public Alias )使用例

CREATE PUBLIC SYNONYM 文 文 文 文を を を を使 使 使 使 用

用 用

用して して して して Public Alias を を を を作成 作成 作成し 作成 し し、 し 、 、 、他 他 他 他の の の のユー ユー ユー ユー ザー ザー

ザー ザーから から から から Public Alias を を を を参照 参照 参照 参照しています しています しています しています

values current schema 1

---DB2ADMIN

1 レコードが選択されました。

create table t1 (c1 char(20))

DB20000I SQL コマンドが正常に完了しました。

grant all on t1 to public

DB20000I SQL コマンドが正常に完了しました。

insert into t1 values ('db2admin')

DB20000I SQL コマンドが正常に完了しました。

create public synonym p_t1 for t1 create public synonym p_t1 for t1 create public synonym p_t1 for t1 create public synonym p_t1 for t1

DB20000I SQL コマンドが正常に完了しました。

values current schema

1 ---USER1

1 レコードが選択されました。

select * from p_t1 C1 ---db2admin

1 レコードが選択されました。

create table p_t1(c1 char(20))

DB20000I SQL コマンドが正常に完了しました。

insert into p_t1 values ('user1')

DB20000I SQL コマンドが正常に完了しました。

select * from p_t1 C1

---user1

1 レコードが選択されました。

select * from syspublicsyspublicsyspublic.p_t1syspublic C1

---db2admin

1 レコードが選択されました。

DB2ADMIN スキーマの T1 表 の Public Alias P_T1 を作成

スキーマ指定なしで呼び出す とPublic Aliasが参照される

Public Aliasと同じオブジェクトがス

キーマ内にある場合はスキーマな いのオブジェクトが参照される

Public AliasはSYSPUBLICスキーマ に作成されます。

明示的にスキーマを指定してPublic Aliasにアクセスすることも可能

Public Alias 作成

他のユーザーから参照

作成済み一時表

V9.7 より より より より作成済 作成済 作成済 作成済み み み み一時表 一時表 一時表 一時表が が が が使用可能 使用可能 使用可能 使用可能

• CREATE GLOBAL TEMPORARY TABLE 文で作成済み一時表を作成

• 作成された定義はカタログに格納され、複数のセッションからの定義 定義 定義 定義の共有が可能

• V9.5までは、宣言済み一時表の使用のみ可能

ユーザー一時表スペース ユーザー一時表スペース

表スペース

索引追加可能、表と同じ表スペースに配置 索引追加可能、表と同じ表スペースに配置

索引

ロッキング、リカバリーは行われません。

LOGGEDが指定されていれば、ローバックは可能 ロッキング、リカバリーは行われません。

LOGGEDが指定されていれば、ローバックは可能 ロッキング、リカバリー

セッション内のみで有効

コミット毎に行の削除または残す設定が可能 セッション内のみで有効

コミット毎に行の削除または残す設定が可能 データの永続性

SESSIONスキーマに作成される 指定可能

スキーマ

なし 表特権の付与、取り消しが可能

表特権

セッション毎に独立してアクセス、SQLによるアクセスが可能 セッション毎に独立してアクセス、SQLによるアクセスが可能

データへのアクセス

カタログには格納されず、セッション毎に宣言し、作成が必要 カタログに格納される。一度作成しておけば使用時の宣言や作

成は不要 定義

DECLARE GLOBAL TEMPORARY TABLE文 CREATE GLOBAL TEMPORARY TABLE文

作成ステートメント

宣言済み一時表 作成済み一時表

作成済み一時表と宣言済み一時表の比較

作成済み一時表使用例

• 作成済 作成済 作成済 作成済み み み み一時表 一時表 一時表を 一時表 を を を作成 作成 作成し 作成 し し し、 、 、 、 複数

複数 複数

複数の の の のセッション セッション セッション セッションから から から使用 から 使用 使用 使用

C:¥>db2 -tvf temptable.sql

create user temporary tablespace usertemp DB20000I SQL コマンドが正常に完了しました。

create global temporary table temptab1 (c1 int,c2 create global temporary table temptab1 (c1 int,c2 create global temporary table temptab1 (c1 int,c2 create global temporary table temptab1 (c1 int,c2 intintint) int) ) ) in

in in

in usertempusertempusertemp on commit preserve rows loggedusertemp on commit preserve rows loggedon commit preserve rows loggedon commit preserve rows logged DB20000I SQL コマンドが正常に完了しました。

list tables

表/ビュー スキーマ タイプ 作成時刻

--- --- --- ---TEMPTAB1 DB2ADMIN

G GG G

2009-06-28-12.03.19.718002

1 レコードが選択されました。

C:¥>db2 connect to test1 user db2admin using db2admin データベース接続情報

データベース・サーバー = DB2/NT 9.7.0

SQL 許可 ID = DB2ADMIN

ローカル・データベース別名 = TEST1

C:¥>db2 "insert into temptab1 values (2,2)"

DB20000I SQL コマンドが正常に完了しました。

C:¥>db2 "select * from temptab1"

C1 C2

---2 ---2

C:¥>db2 connect to test1 user db2admin using db2admin データベース接続情報

データベース・サーバー = DB2/NT 9.7.0

SQL 許可 ID = DB2ADMIN

ローカル・データベース別名 = TEST1

C:¥>db2 "insert into temptab1 values (1,1)"

DB20000I SQL コマンドが正常に完了しました。

C:¥>db2 "select * from temptab1"

C1 C2

---1 ---1

1 レコードが選択されました。

セッション A から作成済み一時表を使用

セッションBから作成済み一時表を使用 作成済み一時表の作成

作成済み一時表はカタログに定義が格納され ているため、LIST TABLESにも出力される タイプはGになる

セッション毎に

データは独立し

ています。

ROWNUM 擬似列

• 行番号をを返す擬似列を使用できる

• 行番号による絞込みなどに使用されます。例:20行目から30行目までを返す。

• DB2_COMPATIBILITY_VECTOR=001 でこの機能を有効にします

• ROWNUM を ROW_NUMBER() OVER() の同義語として使用することを可能にします

• データベース作成後でも有効にできます

PL/SQL のコンパイル 12 (0x800)

データ・ディクショナリー互換ビュー 11 (0x400)

コレクション・メソッド 10 (0x200)

文字リテラル 9 (0x100)

TRUNCATE TABLE

関連したドキュメント