如果列不存在,请更改表

时间:2012-06-13 06:12:52

标签: oracle oracle11g alter-table

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

我正在使用Oracle 11g。

4 个答案:

答案 0 :(得分:6)

试试这个:

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

答案 1 :(得分:2)

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

答案 2 :(得分: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;
/

答案 3 :(得分:1)

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