5

テーブルで、特定の列が存在するかどうかを確認したいと思います。列が存在しない場合は、テーブルを変更してその列を作成します。

Oracle11gを使用しています。

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

列が存在しない場合に列を追加するだけの場合は、を発行するだけALTER TABLE ADD (mycolumn ...);です。ステートメントで例外(ORA-01430: column being added already exists in table)が発生した場合、列はすでに存在しているため、例外を無視できます。

于 2012-06-13T07:10:19.557 に答える
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 に答える
1

user_tab_columnsテーブルを調べて、列が存在するかどうかを確認し、それに応じて実行します

于 2012-06-13T06:20:00.320 に答える