Oracleでカラムの存在チェック&追加
システムのバージョンアップで、必要なカラムが存在している環境と存在していない環境が混在している状況に直面しました。
バージョンアップの手順を1パターンにしたかったため、カラムが存在したら追加するスクリプトで対応しました。
対応方法
- データベースはOracle
- OracleのPL/SQL使用
1.スクリプトファイル
SET SERVEROUTPUT ON;
DECLARE
V_COUNT NUMBER(2) := 0;
V_OWNER VARCHAR(128);
V_TBLNAME VARCHAR(128);
V_COLUMN VARCHAR(128);
BEGIN
------------------------------------------------
-- カラムの存在チェック
------------------------------------------------
V_OWNER := 'TESTUSER';
V_TBLNAME := 'TESTTABLE';
V_COLUMN := 'TESTCOLUMN';
select count(COLUMN_NAME) into V_COUNT from ALL_TAB_COLUMNS where owner = V_OWNER and Table_Name = V_TBLNAME and COLUMN_NAME = V_COLUMN;
IF (V_COUNT = 0) THEN
-- 存在していなかった場合追加
DBMS_OUTPUT.PUT_LINE(V_OWNER || '.' || V_TBLNAME || '.' || V_COLUMN || 'カラムを追加します。');
execute immediate 'ALTER TABLE TESTUSER.TESTTABLE ADD ( TESTCOLUMN VARCHAR2(XXX))';
ELSE
DBMS_OUTPUT.PUT_LINE(V_OWNER || '.' || V_TBLNAME || '.' || V_COLUMN || 'カラムはすでに存在します。');
END IF;
END;
/
quit;
2.実行
$sqlplus user/pass @ xxx.sql
Author And Source
この問題について(Oracleでカラムの存在チェック&追加), 我々は、より多くの情報をここで見つけました https://qiita.com/mugi0801/items/4144f44a98926d06b2f9著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .