【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表スペースが少なくともひとつ定義されている必要があります。