1. ホーム
  2. sql

[解決済み] ORA-00997: LONG データタイプの不正使用に対する回避策

2022-02-05 09:26:03

質問

私はシステムテーブル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型が含まれているため、「long型の不正使用」というエラーが発生しました。

別のテーブルに長い型を格納する別の方法はありますか?

どのように解決するのですか?

<ブロッククオート

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>

回避策の例をもっと見る こちら .