create or replace procedure pcdcd_create_table()
as
begin 
 var_sql= 'create table dfdfs as select * from t_member_info';  
end;上面这个存储过程执行不了 ,我在命令窗口下面执行的时候 报错:pcdcd_create_table()无效执行create table dfdfs as select * from t_member_info 是可以的  
为什么 放在存储过程里面就不呢 ,而且我 的存储过程 已经在表中了  我查看斗已经存在了
请高人指点下 

解决方案 »

  1.   


    create or replace procedure pcdcd_create_table
    as
    begin  
         execute immediate 'create table dfdfs as select * from t_member_info';   
    end;
    /
    --最好执行时加入判断是否表已存在
      

  2.   


    --加入判断后的
    create or replace procedure pcdcd_create_table
    as
    row number:=0;
    begin
        select count(1) into row from tab where upper(tname)=upper('dfdfs');
        if row=0 then
            execute immediate 'create table dfdfs as select * from t_member_info';   
        end if;
    end;
    /
    --exec pcdcd_create_table;
      

  3.   

    存储过程执行DDL语句,需要动态执行,也即
    execute immediate DDL语句;
      

  4.   

    楼主PL/SQL有两处错误:
    V_SQL  没有定义.
    V_SQL  的赋值应该使用 :=