我正在尝试执行以下操作,
select * into temp from (select * from student);
它给我以下错误,
ERROR at line 1:
ORA-00905: missing keyword
在我的实例中,子查询(select * from student)更复杂。
我想在存储过程中使用它,所以我不想自己创建表。我只是想通过使用临时表使我的代码更具可读性。
答案 0 :(得分:9)
那么也许你需要做这样的事情:
declare
type t_temp_storage is table of student%rowtype;
my_temp_storage t_temp_storage;
begin
select * bulk collect into my_temp_storage from student;
for i in 1..my_temp_storage.count
loop
dbms_output.put_line('here I am '||my_temp_storage(i).stuid);
end loop;
end;
答案 1 :(得分:6)
如果表temp不存在,则必须创建它。
CREATE TABLE temp as
SELECT * FROM student;
答案 2 :(得分:3)
你没有选择"进入临时表。如果要根据select:
的结果插入临时表insert into temp
select * from student;
答案 3 :(得分:0)
我发现这很有用:
word
ON COMMIT PRESERVE ROWS子句覆盖默认值(ON COMMIT DELETE ROWS)。如果保留默认设置,则每次提交时都会删除记录,因此,如果使用自动提交客户端,则记录将在创建后立即删除。无论如何,该表仅在会话期间存在。