• Oracle中实现获取指定表名称批量修改表中的字段类型


    一、业务需求

        在进行业务开发过程中,需要实现获取到Oracle中指定数据库下的指定表,然后对这些指定的表修改字段类型,比如需要将类型Varchar2的大小从100修改为200。

    二、思路分析

    ①获取到Oracle中指定数据库下的指定表;

    ②修改指定表的类型sql;

    ③遍历执行修改不同表的指定字段类型;

    三、实现方法

    3.1、获取到Oracle中指定数据库下的指定表

    获取所有表信息
    序号获取所有表sql说明
    1
    SELECT * FROM dba_tables;

    可以查看所有表信息(即所有系统表+所有用户表)

    具有【可以访问DBA_TABLES数据字典视图】权限;

    DBA授予您SELECT ANY DICTIONARY特权或SELECT_CATALOG_ROLE角色(其中任何一个都允许您查询任何数据字典表)

    2
    select * from all_tables;
    可以查看所有用户的表
    3
    select * from user_tables;
    可以查看当前用户的所有表
    4
    select * from user_tab_columns;
    可以查看到所有用户的表结构信息

    3.2、修改指定表的类型sql

    表字段的操作
    序号表字段的操作SQL说明
    1
    alter table test_People add(workAddress varchar2(100));
    alter table test_People add(workAddress varchar2(100),telNumber varchar2(11));

    ①给test_People表添加一个新字段workAddress类型为varchar2且大小为100;

    ②给test_People表添加2个新字段(workAddress类型为varchar2且大小为100;telNumber类型为varchar2且大小为11)

    2
    alter table test_People rename column TYPENAME to testname;
    将test_People表的TYPENAME列名称修改为testname
    3
    update test_People set testname=TYPENAME;
    将test_People表中的TYPENAME列的数据更新到testname列中
    4
    alter table test_People modify TYPENAME VARCHAR2(200);
    将test_People表中的TYPENAME列修改为Varchar2类型且大小为200
    5
    alter table test_People drop column testname;
    将test_People表中的testname列删除

    3.3、遍历执行修改不同表的指定字段类型

    1. --首先查询出当前用户下的所有以test开头的表的表名称,然后使用FOR函数遍历出每个test开头的表名称执行修改每个test开头表中TYPENAME列的字段类型为VARCHAR2且大小为200
    2. BEGIN
    3. FOR r IN (select TABLE_NAME from user_tables WHERE TABLE_NAME like 'test%') LOOP
    4. execute immediate 'ALTER table '|| r.TABLE_NAME ||' MODIFY TYPENAME VARCHAR2(200)';
    5. END LOOP;
    6. END;
    1. --FOR函数的语法
    2. FOR var IN 1..10 LOOP
    3. statement_list
    4. END LOOP;
  • 相关阅读:
    程序员45岁之后,绝大部分都被淘汰吗?真相寒了众人的心
    elementUI中的el-form常用校验规则
    基于javaweb+mysql的前后端分离网上商城项目设计和实现(java+ssm+springboot+vue+redis)
    使用torch普通算子组合替代torch.einsum爱因斯坦求和
    轻松学习-JVM-堆-掰碎分解
    Python List 中的append 和 extend 的区别
    pem文件类解析
    Ubuntu搭建FTP服务
    static_assert
    C++继承(二)多继承,菱形继承,继承中同名成员问题的解决,虚继承。虚基类表和虚基类表指针。
  • 原文地址:https://blog.csdn.net/xiaochenXIHUA/article/details/127622965