如何在oracle存储过程中创建和使用临时表?

Raj*_*lar 13 oracle

我想在存储过程中创建临时表并在同一个访问它但我得到错误,ORA-00942:Table or view does not exists. 以下是我尝试的过程,

Create procedure myproc
  IS
  stmt varchar2(1000);
  BEGIN
  stmt:='CREATE GLOBAL TEMPORARY table temp(list if columns) ON COMMIT DELETE ROWS';

  execute immediate stmt;

  insert into temp values('list of column values');

 END;  
Run Code Online (Sandbox Code Playgroud)

这是我用来创建临时表的方式,但是我得到了错误,有没有其他方法来执行此任务?

tbo*_*one 16

只需先创建它(一次,在您的程序之外),然后在您的程序中使用它.您不希望(尝试)在每次调用过程时创建它.

create global temporary table tmp(x clob)
on commit delete rows;

create or replace procedure...
-- use tmp here
end;
Run Code Online (Sandbox Code Playgroud)

  • 但为什么?我觉得很奇怪。IE 我需要一个“虚拟”表。我可以在程序本身内部创建它吗? (2认同)
  • 我的第二个@Revious我需要在Proc中创建,使用和销毁临时表,Oracle不喜欢它,有什么想法吗? (2认同)