Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 如果列不存在,则更改表_Oracle_Oracle11g_Alter Table - Fatal编程技术网

Oracle 如果列不存在,则更改表

Oracle 如果列不存在,则更改表,oracle,oracle11g,alter-table,Oracle,Oracle11g,Alter Table,在表中,我想检查特定列是否存在。如果该列不存在,我想更改该表并创建该列 我正在使用Oracle 11g。查看用户选项卡列表以检查列是否存在,并相应地执行此操作。尝试以下操作: 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_

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


我正在使用Oracle 11g。

查看用户选项卡列表以检查列是否存在,并相应地执行此操作。

尝试以下操作:

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;

最终,根据您可以使用用户选项卡列的权限而定。

如果您只想添加一个不存在的列,只需发出ALTER TABLE add mycolumn。。。;。如果语句引发异常ORA-01430:表中已存在要添加的列,则该列已存在,您可以忽略该异常。

或者,您可以忽略错误:

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;
/

pl/sql语法的可能重复项不正确。您不能在没有开始的情况下使用DECLARE