Oracle如何获取指定表名称批量修改表中的字段类型

 更新时间:2023年08月02日 08:59:04   作者:牛奶咖啡13  
这篇文章主要给大家介绍了关于Oracle如何获取指定表名称批量修改表中字段类型的相关资料,文中通过示例代码介绍的非常详细,对大家学习使用oracle具有一定的参考价值,需要的朋友可以参考下

一、业务需求

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

二、思路分析

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

②修改指定表的类型sql;

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

三、实现方法

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

获取所有表信息

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

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

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

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

2select * from all_tables;可以查看所有用户的表
3select * from user_tables;可以查看当前用户的所有表
4select * 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)

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

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

--首先查询出当前用户下的所有以test开头的表的表名称,然后使用FOR函数遍历出每个test开头的表名称执行修改每个test开头表中TYPENAME列的字段类型为VARCHAR2且大小为200
BEGIN
FOR r IN (select TABLE_NAME from user_tables WHERE TABLE_NAME like 'test%') LOOP
   execute immediate 'ALTER  table '|| r.TABLE_NAME ||' MODIFY TYPENAME VARCHAR2(200)';
END LOOP;
END;
--FOR函数的语法
FOR var IN 1..10 LOOP
	statement_list
END LOOP;

总结 

到此这篇关于Oracle如何获取指定表名称批量修改表中的字段类型的文章就介绍到这了,更多相关Oracle获取指定表名称内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

最新评论