create or replace procedure getdefault isbegin
  
  create global temporary table deftemp(pid varchar2(5))on commit delete rows
    
  select * from deftemp;
    
end;报错:PLS-001103:Encountered the symbol "CREATE" when expecting on fo the following:
begin case declare exit for goto if loop mod null pragma raise return select update while with<an identirier>

解决方案 »

  1.   

    过程中不容许 这样建表 
    你去看看 动态 语句
    EXECUTE IMMEDIATE  用这个可以在过程中建表 
      

  2.   

    楼主不要用sql server的语法写oracle过程,很多都不一样
    1、每个语句结束后用;
    2、DDL需要用execute immediate动态的sql执行
    3、存储过程不支持直接select,需要用游标
      

  3.   

    create or replace procedure getdefault is
    begin  execute immediate ' create global temporary table deftemp(pid varchar2(5))on commit delete rows';
        select * from deftemp;end;
      

  4.   

      select 也要   execute immediately
      

  5.   

    scott下
    declare
      create_str varchar2(100);
      dept_row  dept%rowtype;
    begin
      create_str := 'create global temporary table temp on commit preserve rows as select * from dept';
       execute immediate create_str ; 
       execute immediate 'select * from temp where rownum=1' into dept_row ;
       dbms_output.put_line(dept_row.deptno ||'+'||dept_row.dname||'+'||dept_row.loc);
    end;