プロが教える店舗&オフィスのセキュリティ対策術

タイトルの通りテーブル(test)の列(retu)を削除したいのですが・・・

Sql*pLUS画面
SQL> alter table test drop(retu); ←この用に入力
alter table test drop(retu)
*
エラー行: 1: エラーが発生しました。
ORA-00905: キーワードがありません。

となってしまい列を削除できません。
なにか構文の間違いでしょうか?

A 回答 (6件)

alter table 表名


drop column 列名;

はOracleのバージョン8.1.5からです。
それ以前の場合は表を再作成します、

まず、既存の表名を変更して、
create table as select します。その際に削除したい列は抜かします。

1.rename 既存の表名 to 新しい表名;

2.create table 既存の表名
as select 必要な列のみ記述 from 新しい表名;


ただ、注意点としては「再作成」ですので、制約はNOT NULL以外全てなくなります。

この回答への補足

バージョンは8.16です。いろいろ試したのですができません。 とりあえずbourbonさんの解答を参考にしてなんとか思う通りのことは出来ました。列を削除できないことでなにか心当たりがありましたらお願いします。

補足日時:2003/01/16 17:04
    • good
    • 0

うーん、なるほど・・・。


初めて見ました。。。

申し訳ないんですが、環境を聞かせてもらってもいいですか?
OSとかOracleのVersionなど、分かる範囲で構いませんので、
お願いします。

ちょっと調べてみます。
よろしくお願いします。
    • good
    • 0
この回答へのお礼

何度も回答ありがとうございます。

本当にすいません!! 
以前Versionを8.16と補足したのですが・・・
改めて管理担当者に問い合わせたところ8.05ということでした。
もうすでに良回答もらってたんですね、こちらの認識不足でbourbonさんにいらぬ手間をお掛けしてしまいましたね。
もっと慎重に質問しなくてはと反省しております。
超初心者なのでこれからもいろいろと質問することもあると思いますが、またお願いします。

お礼日時:2003/01/30 12:25

ORA-00905のエラーは構文に必須項目が抜けているために起こるエラーです。


なので、構文通りにSQL文を記述できていない可能性があります。
ですので、

alter table 表名 drop column 列名;

と構文通りに記述して頂ければ、削除はできると思います。
質問されているコメント欄には間違った構文が掲載されていますので↓

> Sql*pLUS画面
> SQL> alter table test drop(retu); ←この用に入力
> alter table test drop(retu)

構文どおりに行ってもできないということでしたら、その状態を
掲載してください。よろしくお願いします。

この回答への補足

何度も回答ありがとうございます。

実はあれから他のテーブルの列を削除しないといけないことがありまして 

alter table test drop column retu;
と入力したところ

Oracle SQL*Plus画面--------------

SQL> alter table test drop column retu;
alter table test drop column retu
*
エラー行: 1: エラーが発生しました。
ORA-00905: キーワードがありません。


SQL>
--------------------------------
やはり同じエラーが出るようです。
列の追加や属性の変更はできるのですが・・・
またまれに
DROP TABLE 表名;
もできません、意味のないこととは知りつつも大文字にしてみたり小文字にしてみたりとそんなこともやってます。
何か思い当たることがありましたらよろしくお願いします。

補足日時:2003/01/28 16:25
    • good
    • 0

バージョンはいくつでしょうか?


列の削除コマンドが使えるのは8i以降のバージョンですが。

この回答への補足

バージョンは8.16です。いろいろ試したのですができません・・・

補足日時:2003/01/16 17:04
    • good
    • 0

すみません。

切り貼りしたのでテーブル名を間違えました。

ALTER TABLE test DROP COLUMN retu;

この回答への補足

さっそく試してみたのですがやはり同じエラーが出てしまいます。oracle自体に原因があるんでしょうか?

補足日時:2003/01/14 18:16
    • good
    • 0

ALTER TABLE scott.emp DROP COLUMN retu;



じゃないですか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す