用动态SQL就可以。在存储过程中创建表TEMP
declare
  v_str varchar(1000);
begin
  v_str :=' CREATE TABLE TEMP (a number(10)) ';
  execute immediate v_str;
end;
/

解决方案 »

  1.   

    可以,确定有权限.
    grant create any view to user;
      

  2.   

    是很奇怪,用匿名块时没问题,但如果是存储过程,就会报权限不足,但如果是drop table的语句则没有问题,不知道Oracle为什么会这样!
      

  3.   

    grant create any table to user;
    grant create any view to user;
      

  4.   

    SQL> declare
      2  v_str varchar(1000);
      3  begin
      4  v_str:='create table temp2 (hm char(11))';
      5  execute immediate v_str;
      6  end;
      7  /declare
    v_str varchar(1000);
    begin
    v_str:='create table temp2 (hm char(11))';
    execute immediate v_str;
    end;ORA-06550: 行 5, 列 9:
    PLS-00103: 遇到符号 "IMMEDIATE" 当等待下列其中之一时 :
      := . ( @ % ;
    这是为什么啊?
      

  5.   

    我也遇到过你的问题。
    只有动态sql语句才能用create