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了