一時表を定義するには
提供:DB2逆引きWiki
【DB2逆引きリファレンス目次】 【DB2逆引きリファレンス目次#実装編】 【DB2逆引きリファレンス目次#表とビュー】
目次 |
前提
- データベース接続が必要
- 以下のいずれかが必要: SYSADM権限, DBADM権限, USER TEMPORARY表スペースに対するUSE特権
- LIKEまたは全選択を用いて表を定義する場合は、その全選択を実行する権限が必要です
解説
一時表(宣言済み一時表)を定義するには、DECLARE GLOBAL TEMPORARY TABLEを用います。
DECLARE GLOBAL TEMPORARY TABLE 表名 表定義
[ON COMMIT RESERVE ROWS] [NOT LOGGED] [WITH REPLACE]
[IN 表スペース名 ]- 表名
- 定義する一時表の名前を指定します。
- 表定義
-
一時表の定義を以下のいずれかの形式で指定します。
- ( 列定義 )
-
表に含まれる列を以下の形式で指定します。複数の列を定義する場合はカンマで区切って並べます。 列名 列の型 [, 列名 列の型, ....]
- LIKE 表もしくはビュー名
- 表の列定義を、指定した表もしくはビューのものと同じものにします。
- AS ( 全選択 ) DEFINITION ONLY
- 表の列定義を、全選択による照会結果と同じものにします。
- ON COMMIT RESERVE ROWS
- デフォルトではコミット時に一時表の行はすべて削除されます。このオプションを指定するとコミット時に削除を行いません。この場合、セッション終了時に行が削除されます。
- NOT LOGGED
- 表の作成を含め、表に対して行った変更をログに記録しません。
- WITH REPLACE
- 既存で同じ名前の一時表が存在する場合、その一時表を新たに定義する一時表で置き換えます。このオプションを指定しなかった場合、既存の一時表と同じ名前の一時表は定義できません。
- IN 表スペース名
- 一時表を作成するUSER TEMPORARY表スペースの名前を指定します。
使用例
列を指定して一時表(ここではusertmp1)を定義する例。
db2 ==> DECLARE GLOBAL TEMPORARY TABLE usertmp1 (name CHAR(8), total INT)↓
他の表(ここではmaster)を用いて一時表(ここではusertmp2)を定義する例。
db2 ==> DECLARE GLOBAL TEMPORARY TABLE usertmp2 LIKE master↓
全選択を用いて一時表(ここではusertmp3)を定義する例。
db2 ==> DECLARE GLOBAL TEMPORARY TABLE usertmp3 AS ( SELECT name, SUM(amount) AS total FROM parts GROUP BY name ) DEFINITION ONLY↓
注意
- USER TEMPORARY表スペースが少なくともひとつ定義されている必要があります。