v_ssql:='alter table a add g number(10)';
  tableaddcolumn(v_ssql);
  v_ssql:='insert into a(g)
  values (10);';
  tableaddcolumn(v_ssql);
  open cur_out for  select * from a;tableaddcolumn 就一个execute immediate语句的存储过程为什么每次执行insert into a(g)
  values (10); 都报 g 字段没找到

解决方案 »

  1.   

    SQL> create table a (id number);Table createdSQL> 
    SQL> declare
      2  v_ssql varchar2(100);
      3  begin
      4  v_ssql:='alter table a add g number(10)';
      5  execute immediate v_ssql;
      6  v_ssql:='insert into a(g) values (10)';
      7  execute immediate v_ssql;
      8  commit;
      9  end;
     10  /PL/SQL procedure successfully completedSQL> select * from a;        ID           G
    ---------- -----------
                        10没有问题啊