如何在oracle同一个用户下所有的表批量加上同一个新字段

  • Post author:
  • Post category:其他


在项目工作中,目前遇到一个情况要给一个用户下大量表添加同一个新字段,对于新人来说比较头疼,如果进行复制粘贴,面对大量表的时候会有很大的工作量。

因此可以采用for 游标的形势来进行语句的批量执行。

首先可以在sql窗口进行如下代码运行(created_by 为一个新的字符字段)

select '  ALTER TABLE  ' || OBJECT_NAME ||'  ADD (CREATED_BY VARCHAR2(32));' 
          from user_objects t
 where OBJECT_TYPE in ('TABLE') 

尝试运行得到如下结果:

同样也可以换一个数据字典user_tables,省去过滤条件 :

select '  ALTER TABLE  ' || TABLE_NAME ||
       '  ADD (CREATED_BY VARCHAR2(32));'
  from user_tables t

得到如下结果:

两者之后可以把运行结果封装到临时表,之后进入plsql中编写存储过程,将for游标遍历的表中内容传输到动态sql中就可以进行一个批量的添加字段了。

以上仅为大家提供一个思路,如果有什么优化或者其他方案,也欢迎大家讨论。



版权声明:本文为Crozz_Dragon原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。