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、遍历执行修改不同表的指定字段类型

--首先查询出当前用户下的所有以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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牛奶咖啡13

我们一起来让这个世界有趣一点…

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值