次の例では、データベースの現在のユーザーの名前に「_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スクリプトを実行することをお勧めします。