初来咋到需要建立一个存储过程,用到临时表。
将数据库中的一个表如table1数据放入临时表temp1中,然后对temp1进行一些查询分析,最后返回temp1的结果集。不知道怎么写,以前写过SqlServer的存储过程,oracle感觉有很大不同,各位帮帮忙,给个例子。
将数据库中的一个表如table1数据放入临时表temp1中,然后对temp1进行一些查询分析,最后返回temp1的结果集。不知道怎么写,以前写过SqlServer的存储过程,oracle感觉有很大不同,各位帮帮忙,给个例子。
CREATE GLOBAL TEMPORARY TABLE TABLENAME (
COL1 VARCHAR2(10),
COL2 NUMBER
) ON COMMIT PRESERVE ROWS ;然后就可以象正常表一样使用了,preserve关键词指定的临时表的数据只对当前会话可见,不需要考虑加锁的问题,在会话断开时才会清空。另外ORACLE的表是永久存在的,只有里面的数据是临时的。
--会话型的,会话结束数据清空
create global temporary table test_tmp(id number,name varchar2(10).....)
on commit preserve rows--事务型的,事务结束数据清空
create global temporary table test_tmp(id number,name varchar2(10)......)
on commit delete rows--过程
create or replace procedure p_rec(cur out sys_refcursor)
as
begin
insert into 临时表 select * from tb;
commit;
open cur for select * from 临时表 where ....;
end;
--调用
var cur refcursor
exec p_rec(:cur);
print cur
或者declare
cur sys_refcursor;
变量...;
begin
fetch cur into 变量;
while cur%found loop
dbms_output.put_line(变量);
fetch cur into 变量;
end loop;
close cur;
end;