我想在存储过程中创建临时表,并在同一存储过程中访问它,但是我收到了错误消息:ORA-00942:表或视图不存在。
以下是我尝试的存储过程:
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;
这是我曾经用来创建临时表的方法,但是我遇到了错误,有没有其他方法可以执行此任务?
temp
还不存在。编译器不会尝试解析动态SQL,最重要的是它不知道它是否在运行时有效。这种方法能够成功的唯一途径是将插入语句也转换为动态SQL;但是这不是Oracle中临时表的工作方式,所以不要像这样做。 - Alex Poole