admin管理员组文章数量:1657214
需要在存储过程中返回一个临时结果集,这个结果集又是多个语句通过循环查询出来的,这时候就想到了将结果插入到临时表中,然后返回临时表的数据的思路,于是有了以下操作:
1.创建临时表
-- Create table
create global temporary table T_PROJECT_AMOUNT_TEMP
(
project_id VARCHAR2(1000),
con_amount_tax_s NUMBER
)
on commit preserve rows;
-- Add comments to the table
comment on table T_PROJECT_AMOUNT_TEMP
is '临时表';
-- Add comments to the columns
comment on column T_PROJECT_AMOUNT_TEMP.project_id
is '项目ID';
comment on column T_PROJECT_AMOUNT_TEMP.con_amount_tax_s
is '项目合同金额';
2.创建存储过程
CREATE OR REPLACE PROCEDURE PRC_XXXX(
TODO_CUR OUT PKG_QUERY.CUR_QUERY
) AS
BEGIN
delete from T_PROJECT_AMOUNT_TEMP;
--遍历数据
for dataOjb in (
select * from xxx t where xxx
) loop
--往临时表插入记录
insert into T_PROJECT_AMOUNT_TEMP
select xx,xx from XXX;
insert into T_PROJECT_AMOUNT_TEMP
select xx,xx from XXX;
END LOOP;
--将临时表中的记录返回
open TODO_CUR for
select * from T_PROJECT_AMOUNT_TEMP k;
END PRC_XXXX;
在存储过程中先将临时表清空,然后再往临时表插入记录,不然数据会重复插入。
本文标签: GlobalORACLEtableTemporary
版权声明:本文标题:oracle中使用临时表GLOBAL TEMPORARY TABLE 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1729779835a1212566.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论