Oracleはすべてのテーブルにフィールドをすばやく追加します

次の例では、データベースの現在のユーザーの名前に「_OPT」が含まれているすべてのテーブルに、フィールド「IMPORT_DATE」を追加し、フィールドコメント「Dateofstorage」を追加します。

declare
  --需要执行的SQL字符串
  v_alter_sqlstr  varchar2(500);
  -- 游标
  cursor c_result is 
  select 'alter table ' || t.OBJECT_NAME  || ' add IMPORT_DATE date default sysdate;
          comment on column ' || t.OBJECT_NAME ||'.IMPORT_DATE is ''入库日期''; 
        ' as alter_sqlstr
    from user_objects t where t.OBJECT_TYPE='TABLE' and t.object_name like '%_OPT';

  -- 定义一个与游标一样的变更
  v_result c_result%rowtype;
begin
  open c_result;
    loop
      fetch c_result into v_result;  
      exit when c_result%notfound;
      v_alter_sqlstr := v_result.alter_sqlstr;
      dbms_output.put_line(v_alter_sqlstr); -- 可单独将SQL从output窗口提取出来执行
      
      -- 执行修改
      --execute immediate v_alter_sqlstr;   
    end loop;
  close c_result;
exception
  when others then
    begin
      dbms_output.put_line('异常:' || 'sqlcode:' || sqlcode || ' sqlerrm : ' ||sqlerrm );
    end;  
end;

上記のSQLステートメントを直接実行してフィールドをテーブルに追加することも、実行する必要のあるSQLステートメントを出力して個別に実行することもできます。

安全のため、先に実行するSQL文を印刷し、問題がないことを確認してから手動でSQLスクリプトを実行することをお勧めします。

おすすめ

転載: blog.csdn.net/liangmengbk/article/details/109156003