如何创建临时表问题

时间:2022-04-08 12:15:04
------------------------------ 输入的命令 ------------------------------
declare global temporary table trade_tmpcredit 
(
bankid   Varchar(30) not null,
  totalamt Numeric(20,2),
  spotamt  Numeric(20,2),
  fwdamt   Numeric(20,2),
  crsamt   Numeric(20,2)
)
on commit DELETE rows
NOT LOGGED@


输出错误提示:
------------------------------------------------------------------------------
declare global temporary table trade_tmpcredit ( bankid   Varchar(30) not null, totalamt Numeric(20,2), spotamt  Numeric(20,2), fwdamt   Numeric(20,2), crsamt   Numeric(20,2) ) on commit DELETE rows NOT LOGGED
DB21034E  该命令被当作 SQL 语句来处理,因为它是无效的“命令行处理器”命令。在
SQL 处理期间,它返回:
SQL0286N  找不到页大小至少为 "4096" 且许可其使用授权标识 "ADMINISTRATOR"
的缺省表空间。  SQLSTATE=42727

SQL0286N  找不到页大小至少为 "4096" 且许可其使用授权标识 "ADMINISTRATOR                                                    " 的缺省表空间。

说明: 

CREATE TABLE、CREATE GLOBAL TEMPORARY TABLE 或 DECLARE GLOBAL TEMPORARY 
TABLE 语句未指定表空间,找不到具有足够页大小(至少为 "<页大小>"),且具
有正确类型(对于已创建的临时表或者已声明的临时表,为 USER TEMPORARY),
而授权标识 "<用户名>" 对其具有 USE 特权的表空间。

表的足够页大小是由行的字节数或列数确定的。

用户响应: 

确保存在具有正确类型(REGULAR 或 USER TEMPORARY),且页大小至少应为 
"<页大小>",并且授权标识 "<用户名>" 对其具有 USE 特权的表空间。

sqlcode:-286

  sqlstate:42727

3 个解决方案

#1


你的数据库里没有用户临时表空间,创建语句例子如下:
db2 "create user temporary tablespace TBSUSERTMP16K pagesize 16k managed by system using ('/inte_tmp/tbsusertmp16k') extentsize 32 prefetchsize 64 bufferpool BFPINTE"

#2


引用 1 楼 zhaojianmi1 的回复:
你的数据库里没有用户临时表空间,创建语句例子如下:
db2 "create user temporary tablespace TBSUSERTMP16K pagesize 16k managed by system using ('/inte_tmp/tbsusertmp16k') extentsize 32 prefetchsize 64 bufferpool BFPINTE"

create user temporary tablespace TEMP_CREDIT pagesize 16k managed by system using ('/inte_tmp/TEMP_CREDIT') extentsize 32 prefetchsize 64 bufferpool BFPINTE 
DB21034E  该命令被当作 SQL 语句来处理,因为它是无效的“命令行处理器”命令。在
SQL 处理期间,它返回:
SQL0204N  "BFPINTE" 是一个未定义的名称。  SQLSTATE=42704

#3


这个是缓冲池,你看看你数据库里有什么缓冲池

#1


你的数据库里没有用户临时表空间,创建语句例子如下:
db2 "create user temporary tablespace TBSUSERTMP16K pagesize 16k managed by system using ('/inte_tmp/tbsusertmp16k') extentsize 32 prefetchsize 64 bufferpool BFPINTE"

#2


引用 1 楼 zhaojianmi1 的回复:
你的数据库里没有用户临时表空间,创建语句例子如下:
db2 "create user temporary tablespace TBSUSERTMP16K pagesize 16k managed by system using ('/inte_tmp/tbsusertmp16k') extentsize 32 prefetchsize 64 bufferpool BFPINTE"

create user temporary tablespace TEMP_CREDIT pagesize 16k managed by system using ('/inte_tmp/TEMP_CREDIT') extentsize 32 prefetchsize 64 bufferpool BFPINTE 
DB21034E  该命令被当作 SQL 语句来处理,因为它是无效的“命令行处理器”命令。在
SQL 处理期间,它返回:
SQL0204N  "BFPINTE" 是一个未定义的名称。  SQLSTATE=42704

#3


这个是缓冲池,你看看你数据库里有什么缓冲池