この二つのパラメーターが設定されている場合には、パラメーター・マーカーの入 力値から、データタイプが判別されて、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.7180021 レコードが選択されました。
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になる