ORA-30078: partition bound must be TIME/TIMESTAMP WITH TIME ZONE literals

文档解释

ORA-30078: partition bound must be TIME/TIMESTAMP WITH TIME ZONE literals

Cause: An attempt was made to use a time/timestamp expression whose format does not explicitly have time zone on a TIME/TIMESTAMP or TIME/TIMESTAMP WITH TIME ZONE column.

Action: Explicitly use TIME/TIMESTAMP WITH TIME ZONE literal.

ORA-30078: 异常表达式

错误消息:ORA-30078:分区界限必须是TIME/TIMESTAMP WITH TIME ZONE字面量

官方解释

常见例子:

比如:在创建分区表时,界限字段定义为TIMESTAMP,在插入分区时由GETDATE()函数返回,此时会发生ORA-30078错误。

一般处理方法及步骤

(1)检查分区界限字段的数据类型是否是TIMESTAMP WITH TIME ZONE

(2)使用TIMESTAMP WITH TIME ZONE来替换GETDATE()返回的时间:

比如:

–建表时,分区界限字段为TIMESTAMP WITH TIME ZONE

CREATE TABLE orders (

order_id number,

order_timestamp timestamp with time zone

)

PARTITION BY RANGE (order_timestamp)

PARTITION p1 VALUES LESS THAN (to_timestamp_tz(current_date, ‘YYYY-MM-DD HH24:MI:SS TZ’) )

);

–插入记录时,将TIMESTAMP WITH TIME ZONE字面量传入

INSERT INTO orders

VALUES (1, to_timestamp_tz(current_date, ‘YYYY-MM-DD HH24:MI:SS TZ’) );

你可能感兴趣的