一尘不染

ORA-00997的变通办法:非法使用LONG数据类型

sql

我想将一些数据从系统表user_tab_cols保存到临时表,以便可以从中进行转储。

其中有100,000行,我从user_tab_cols中选择了约1,000条记录,并使用此查询将它们保存到临时表中:

create table temp table as 
select * from user_tab_cols where condition...

由于列DATA_DEFAULT包含long类型,因此出现错误“非法使用longtype”。

有没有其他方法可以将长类型存储到另一个表中?


阅读 150

收藏
2021-05-05

共1个答案

一尘不染

ORA-00997:非法使用LONG数据类型

这是对 LONG* 数据类型的使用的 限制您不能使用LONG属性创建对象类型。 * __

SQL> CREATE TABLE t AS SELECT data_default FROM user_tab_cols;
CREATE TABLE t AS SELECT data_default FROM user_tab_cols
                         *
ERROR at line 1:
ORA-00997: illegal use of LONG datatype


SQL>

或者,您可以使用 TO_LOB 作为解决方法。将其转换为CLOB数据类型。

例如,

SQL> CREATE TABLE t AS SELECT TO_LOB(data_default) data_default FROM user_tab_cols;

Table created.

SQL> desc t;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 DATA_DEFAULT                                       CLOB

SQL>

在此处查看更多解决方法示例。

2021-05-05