我想在存储过程里面使用  create table tmp1 as select num,xingmin from tmp;
或者 alter table tmp1 add(filed1 number(20)); 这样的语句,应该怎么处理呢?
谢谢!

解决方案 »

  1.   

    v_sql ='create table as ...';
    EXECUTE immediate v_sql;
      

  2.   

    使用动态语句创建:
    EXECUTE immediate 'create table tmp1 as select num,xingmin from tmp';
    EXECUTE immediate alter table tmp1 add(filed1 number(20))';
      

  3.   

    对,在过程中执行DDL只能是通过动态语句来实现了!
      

  4.   

    就是使用动态sql语句,
    使用execute immediate 'create table sql';
    或者使用:
    str:='create table sql';
    execute immediate str;
      

  5.   

    execute immediate 'create table tmp1 as select num,xingmin from tmp';
    execute immediate 'alter table tmp1 add(filed1 number(20))';
      

  6.   

    使用动态语句创建:execute immediate 'create table tmp1 as select num,xingmin from tmp';
      

  7.   

    使用动态语句创建: 
    EXECUTE immediate 'create table tmp1 as select num,xingmin from tmp'; 
    EXECUTE immediate alter table tmp1 add(filed1 number(20))'; 
      

  8.   

    使用动态语句创建: 
    EXECUTE immediate 'create table tmp1 as select num,xingmin from tmp'; 
    EXECUTE immediate alter table tmp1 add(filed1 number(20))'; 
      

  9.   

    使用动态语句创建:execute immediate 'create table tmp1 as select num,xingmin from tmp';