oracle一次給多表添加相同字段


遇到一個需求:在已經建好的數據庫中,為每一個數據表都添加相同的3個字段。

分析:數據庫中的數據表較多,一一手動修改耗時低效,是否可以用程序遍歷每一張表,然后為遍歷到的當前表添加字段?

查詢當前用戶的所有表定義和為某張表添加字段比較容易實現的,SQL中游標可以將這兩者組織起來,因此編寫以下程序實現功能:

DECLARE
  V_SQL        VARCHAR2(2000);
  V_TABLE_NAME VARCHAR2(30);
  CURSOR C1 IS
    SELECT TABLE_NAME FROM USER_TABLES;   --查詢當前用戶下的所有表
BEGIN
  OPEN C1;
  LOOP
    --提取一行數據到c1
    FETCH C1
      INTO V_TABLE_NAME;
    --判讀是否提取到值,沒取到值就退出
    --取到值c_job%notfound 是false 
    --取不到值c_job%notfound 是true
    EXIT WHEN C1%NOTFOUND;
    V_SQL := 'alter table ' || V_TABLE_NAME || ' add BATCHDATE NUMBER(8,0)';
    EXECUTE IMMEDIATE V_SQL;
    V_SQL := 'alter table ' || V_TABLE_NAME ||
             ' add SOURCE_ID  NUMBER(8,0)';
    EXECUTE IMMEDIATE V_SQL;
    V_SQL := 'alter table ' || V_TABLE_NAME || ' add load_date date';
    EXECUTE IMMEDIATE V_SQL;
  END LOOP; --關閉游標
  CLOSE C1;
END;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM