我有一个带有表格的Oracle数据库,如下所示:
create table Table1
(Column1 number(5,0),
Column2 special_type);
现在,由于一些数据错误,支持团队决定修复将丢弃并重新创建Type。
我现在有一张表格如下:
Table1
Column1 number(5,0),
Column2 null
问题是,我不能放弃桌子,我得到一个"桌子有错误"信息。我不能改变表格,我得到一个"表格有错误"信息。我试图在Oracle SQL Developer中操作DDL,猜猜我得到了什么? A"表有错误"消息。
有人能指出我正确的方向吗?
答案 0 :(得分:1)
似乎支持团队已经强行放弃了这种类型。在正常情况下,如果类型具有任何从属表,则不能删除该类型。
参见演示:
SQL> CREATE OR REPLACE TYPE NUU AS TABLE OF NUMBER;
/
Type created.
SQL> CREATE TABLE TBLLL(NUM NUU)
NESTED TABLE NUM STORE AS VVVVV ;
/
Table created.
现在当我尝试做一个简单的drop类型时,我得到以下错误:
SQL> drop type nuu;
drop type nuu
*
ERROR at line 1:
ORA-02303: cannot drop or replace a type with type or table dependents
所以我强行放弃它:
SQL> drop type nuu force;
Type dropped.
当我尝试选择时,我得到错误:
SQL> select * from tblll;
select * from tblll
*
ERROR at line 1:
ORA-04063: table "USER.TBLLL" has errors
因此,为了Alter
表,您首先需要创建type
。创建type
后,您的表格定义变为correct
,然后您可以Alter
您的表格。
其他解决方案是删除表并重新创建它已经提到的不起作用。
答案 1 :(得分:0)
您可以尝试以下方法 -
重新创建类型
创建另一个具有相同表结构的表
将数据插入第二个表
现在使用第二张表。
您可能不希望重新创建该类型,因为它早先导致了问题。寻找替代方案。它可能会解决您的问题。