RT   编辑,测试都没有问题, 执行 EXEC  chuangjiang(1)  提示过程执行成功,但是没有找到新表A1create or replace procedure chuangjian
(v_id in varchar)
is
beginif  v_id  = to_char(1,9)thenexecute immediate   'create table A1 as select * from a'|| ';';
                   
end if ;
end;

解决方案 »

  1.   

    create or replace procedure chuangjian
    (v_id in varchar)
    is
    beginif v_id = trim(to_char(1,9))thenexecute immediate 'create table A1 as select * from dual';end if ;
    end;
      

  2.   

    create or replace procedure chuangjian
    (v_id in varchar)
    is
    beginif v_id = to_char(1,9) --------这里不成立,所以直接跳过去了thenexecute immediate 'create table A1 as select * from a'|| ';'; -----这个最后面也有问题,
            
    end if ;
    end;
      

  3.   

    1.一开始定义 V_ID 为number 型的,执行的时候报错, 后来都修改成字符类型的了。 这里用字符转换 to_char  把数字转字符,没什么不妥吧?
    2.后面改为 :execute immediate   'create table A1 as select * from a ;';   
    这样对么? 执行的时候没报错
      

  4.   

    create or replace procedure chuangjian
    (v_id in varchar)
    is
    begin
    if  v_id  = 1
    then
    execute immediate   'create table A1 as select * from a';                  
    end if ;
    end;多谢指点,结贴散分