oracle一次给表添加多个字段

Posted vnx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;

 

以上是关于oracle一次给表添加多个字段的主要内容,如果未能解决你的问题,请参考以下文章

mysql 怎么给一个表一次增加多个字段?

oracle 给表和字段添加注释

在高并发高负载的情况下,如何给表添加字段并设置DEFAULT值?

在高并发高负载的情况下,如何给表添加字段并设置DEFAULT值?

oracle 给表字段把VARCHAR2 换成 CLOB

mysql添加多个字段&删除多个字段