Oracle批量修改表字段的长度

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Oracle批量修改表字段的长度
declare
-- 修改表字段长度的字符串
v_alter_sqlstr varchar2(500);
-- 游标
cursor c_result is
select t_tables.table_name,
t_column.column_name,
t_column.data_length,
'alter table '|| t_column.table_name ||' modify '|| t_column.column_name ||
' varchar2(200)'as alter_sqlstr
from user_tab_columns t_column, user_tables t_tables
where t_column.table_name = t_tables.table_name
and t_tables.table_name like'RP_NW_%'-- 模糊匹配的表名
and t_column.data_length <100-- 可根据字段长度
and t_column.data_type ='VARCHAR2'-- 可根据字段类型
and t_tables.table_name ='RP_NW_HWXSYBG'; -- 具体那张表
-- 定义⼀个与游标⼀样的变更
v_result c_result%rowtype;
begin
open c_result;
loop
fetch c_result into v_result;
exit when c_result%notfound;
v_alter_sqlstr := v_result.alter_sqlstr;
dbms_output.put_line(v_alter_sqlstr ||';'); -- 可单独将SQL从output窗⼝提取出来执⾏
-- 执⾏修改
execute immediate v_alter_sqlstr;
end loop;
close c_result;
exception
when others then
begin
dbms_output.put_line('异常:'||'sqlcode:'|| sqlcode ||' sqlerrm : '||sqlerrm );
end;
end;
以下代码可改造成存储过程,可根据代码中定义游标SQL语句中的条件来作为传⼊的参数,这样就更加灵活了。

相关文档
最新文档