我想在存儲過程創建臨時表,並訪問它在相同的,但我得到了錯誤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