Sai*_*ait 13 oracle plsql sqlplus
我想尝试做以下事情,
select * into temp from (select * from student);
Run Code Online (Sandbox Code Playgroud)
它给了我以下错误,
ERROR at line 1:
ORA-00905: missing keyword
Run Code Online (Sandbox Code Playgroud)
在我的实例中,子查询(select*from student)更复杂.
我想在存储过程中使用它,所以我不想创建表本身.我只是想通过使用临时表使我的代码更具可读性.
Mar*_*ina 10
那么也许你需要做这样的事情:
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;
Run Code Online (Sandbox Code Playgroud)
小智 8
如果表temp不存在,则必须创建它.
CREATE TABLE temp as
SELECT * FROM student;
Run Code Online (Sandbox Code Playgroud)
我发现这个很有用:
CREATE GLOBAL TEMPORARY TABLE MY_TEMPORARY_TABLE ON COMMIT PRESERVE ROWS AS (
SELECT * FROM MY_TABLE WHERE MY_CONDITION
)
Run Code Online (Sandbox Code Playgroud)
ON COMMIT PRESERVE ROWS 子句会覆盖默认子句 (ON COMMIT DELETE ROWS)。如果保留默认值,记录将在每次提交时删除,因此如果您使用自动提交客户端,记录将在创建后立即删除。无论如何,在这两种情况下,表仅在会话期间存在。
您不会“选择”临时表。如果您想将选择结果插入到临时表中:
insert into temp
select * from student;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
68497 次 |
| 最近记录: |