2

タイプ clob の列を持つ Oracle テーブルがあります。列の順序を維持し、データ型を varchar2 に変更したいと考えています。列にはテキストのみが含まれます。

update IN_MSG_BOARD set MSG_TEXT = null;
alter table IN_MSG_BOARD modify MSG_TEXT long;
alter table IN_MSG_BOARD modify MSG_TEXT varchar2(4000);

標準メッセージが表示されます:

ORA-22859: 列の変更が無効です

列をnullにしてから、charまたはlongに変換してから、varchar2に変換しようとしました。しかし、何も機能していないようです。1つの列を変更するためにテーブルをコピーする必要はありません。

内容だけ読みたいわけじゃない。列のデータ型を clob から varchar2 に変更したいと考えています。

助けていただければ幸いです。私はしばらくこれに取り組んできました。ご不明な点がございましたら、お知らせください。

4

2 に答える 2

1

次の手順を実行できます。

1. alter table my_table add (new_column varchar2(4000));

2. update my_table set new_column = dbms_lob.substr(old_column,4000,1);

3. alter table my_table drop column old_column
于 2015-05-26T16:55:46.913 に答える