我想在存储过程创建临时表,并访问它在相同的,但我得到了错误ORA-00942:Table or view does not exists.
下面是我试过的程序,如何在oracle存储过程中创建和使用临时表?
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;
这是我用来创建临时表的方式,但我得到了错误,是否有任何其他方式来执行此任务?
@ tbone的答案显示了你应该做的事情,但是要解释你所看到的:你不能这样做,因为在编译过程时'temp'还不存在。编译器不会尝试解析动态SQL,至少因为它不知道它是否可以在运行时工作。这种方法可行的唯一方法是如果插入也转换为动态SQL;但这不是临时表在Oracle中的工作方式,因此不要这样做。 – 2012-02-16 12:25:47
@Alex Poole:谢谢 – 2012-02-16 13:03:42
[Oracle 10中的本地临时表(用于存储过程的范围)](http://stackoverflow.com/questions/1192265/local-temporary-table-in-oracle-10 - 存储过程的范围) – APC 2012-02-16 16:22:48