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>
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>
你去看看 动态 语句
EXECUTE IMMEDIATE 用这个可以在过程中建表
1、每个语句结束后用;
2、DDL需要用execute immediate动态的sql执行
3、存储过程不支持直接select,需要用游标
begin execute immediate ' create global temporary table deftemp(pid varchar2(5))on commit delete rows';
select * from deftemp;end;
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;