选择Oracle中的临时表

时间:2015-02-22 00:55:56

标签: oracle plsql sqlplus

我正在尝试执行以下操作,

select * into temp from (select * from student);

它给我以下错误,

ERROR at line 1:
ORA-00905: missing keyword

在我的实例中,子查询(select * from student)更复杂。

我想在存储过程中使用它,所以我不想自己创建表。我只是想通过使用临时表使我的代码更具可读性。

4 个答案:

答案 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)。如果保留默认设置,则每次提交时都会删除记录,因此,如果使用自动提交客户端,则记录将在创建后立即删除。无论如何,该表仅在会话期间存在。