5

在表中,我想检查特定列是否存在。如果该列不存在,我想更改表并创建该列。

我正在使用 Oracle 11g。

4

4 回答 4

7

尝试这个:

declare p_count NUMBER;

select count(1) int p_count
from ALL_TAB_COLUMNS 
where OWNER = '<SCHEMA_NAME>' 
and TABLE_NAME = '<TABLE_NAME>' 
and COLUMN_NAME = '<COLUMN_NAME>';

IF p_count = 0 THEN
    --add your column
END IF;

最终(取决于权利)您可以使用user_tab_columns.

于 2012-06-13T06:24:02.760 回答
2

或者,您可以忽略该错误:

declare
    column_exists exception;
    pragma exception_init (column_exists , -01430);
begin
    execute immediate 'ALTER TABLE db.tablename ADD columnname NVARCHAR2(30)';
    exception when column_exists then null;
end;
/
于 2014-10-01T21:47:53.620 回答
2

如果您只想添加不存在的列,只需发出ALTER TABLE ADD (mycolumn ...);. 如果语句引发异常 ( ORA-01430: column being added already exists in table),则该列已经存在,您可以忽略该异常。

于 2012-06-13T07:10:19.557 回答
1

查看 user_tab_columns 表以检查该列是否存在,并相应地执行

于 2012-06-13T06:20:00.320 回答