问题描述
- Oracle 批量修改表字段的问题
-
ORA-06550:第17行 17列
PLS-00103:出现符号end 在需要下列之一时:declare cursor cur_TableName is Select * From user_tab_columns where TABLE_NAME like 'SQGL%' and column_name='OID'; begin for i in cur_TableName loop -- 打印 删除表数据 --dbms_output.put_line('truncate table '||i.TABLE_NAME||';'); declare cursor cur_DataType is Select * From user_tab_columns where table_name=i.TABLE_NAME; begin for j in cur_DataType loop begin if j.data_type='NVARCHAR2' then -- alter table i.TABLE_NAME modify(j.column_name varchar2(j.data_length)); end if; end; end loop; end; end loop; end;
解决方案
我想问的是 可以实现批量修改表字段类型吗。
还是只能一个一个的去改。
解决方案二:
http://www.2cto.com/database/201305/215124.html
解决方案三:
修改表字段类型需要一条条alter,
批量执行一般都是
alter table 表名 modify 字段等信息;
alter table 表名 modify 字段等信息; --后面加分号就在客户端能够批量执行。
解决方案四:
可以这样,通过sql生成一个批量的修改数据的sql,如
select 'alter table'||table_name||' add col_1 varchar2(100);' from user_tables
解决方案五:
可以这样,通过sql生成一个批量的修改数据的sql,如
select 'alter table'||table_name||' add col_1 varchar2(100);' from user_tables
然后再把这个sql复制出来,执行就ok了
时间: 2025-01-21 15:38:06