create or replace procedure pcx_h5_htqyyscx(
O_CODE OUT NUMBER,
O_NOTE OUT VARCHAR2,
O_HASRECORDSET OUT NUMBER,
O_RESULT OUT SYS_REFCURSOR,
I_PAGING IN NUMBER,
I_PAGENO IN NUMBER,
I_PAGELENGTH IN NUMBER,
I_TOTALROWS IN OUT NUMBER,
I_SORT IN VARCHAR2,
·
·
·
I_JSNR IN VARCHAR2 --接收內容
)
/*
-- 創建臨時表 用於存儲游標數據(創建語句放在sql窗口執行)
create global temporary table temp_h5_tykj
(
code varchar2(50),
name varchar2(100)
)ON commit preserve rows;
*/
V_SQL VARCHAR2(32767);
V_COL_LST VARCHAR2(2000);
V_SORT VARCHAR2(2000);
--定義游標類型
rs sys_refcursor;
--TYPE 表示定義變量,變量類型是RECORD(變量1,變量2···)
type qyys_rec_type is record (code varchar2(100), contnumber varchar2(100), contname varchar2(100), datajson varchar2(4000), savepath varchar2(200));
-- 定義一個存放記錄行類型元素的集合類型即表
type qyys_tab_type is table of qyys_rec_type;
qyys_tab qyys_tab_type;
begin
O_CODE := 1;
O_NOTE := '成功';
O_HASRECORDSET := 1;
--- 清空下臨時表的數據
execute immediate 'truncate table temp_h5_tykj';
-- 調用子過程(返回游標的)
PCX_FAMILY_APP_QYYS(rs,I_TOTALROWS,I_PAGENO,I_PAGELENGTH,I_SORT,i_htid,v_khbh,1,null,null);
--遍歷游標取數
fetch rs bulk collect into qyys_tab;
for i in 1..qyys_tab.count loop
qyys_tab.extend;
insert into temp_h5_tykj(code,name)
values (tykj_tab(i).code,tykj_tab(i).name); -- 將游標數據存放到臨時表中
/*v_code := qyys_tab(i).code;
v_contnumber := qyys_tab(i).contnumber;
v_contname := qyys_tab(i).contname;
v_datajson := qyys_tab(i).datajson;
v_savepath := qyys_tab(i).savepath;*/
end loop;
/*V_SQL := 'select ''' || v_code || ''' as code,''' || v_contnumber || ''' as contnumber,''' || v_contname || ''' as contname,'''
|| v_datajson || ''' as datajson,''' || v_savepath || ''' as savepath from dual';
V_COL_LST := 'code as "code",contnumber as "contnumber",contname as "contname",datajson as "datajson",savepath as "savepath"';*/
·V_SQL := 'select code,name from temp_h5_tykj';
·V_COL_LST := 'code as "code",name as "name"';
·
---- 子過程實例
CREATE OR REPLACE PROCEDURE PCX_FAMILY_APP_QYYS(CUR_RESULT OUT TYPES.CURSORTYPE, --結果游標
O_COUNT OUT NUMBER, --結果集總記錄數
I_PAGENUMBER IN NUMBER, --頁碼
I_PAGECOUNT IN NUMBER, --每頁行數
I_SORT IN VARCHAR2 DEFAULT NULL, --排序字段
I_ID IN NUMBER, --合同ID 或 利益分配明細ID
I_CUSTNO IN VARCHAR2,
I_SIGN_TYPE IN NUMBER,
I_ID2 IN NUMBER,
I_ID3 IN NUMBER
) IS
·
·
·
V_SQL := '
SELECT '''||V_HTMB||''' o_tempcode,
'''||·····||''' o_contnumber,
'''||······||''' o_contname,
'''||·····||''' o_datajson,
'''||·····||''' o_savepath
FROM DUAL';
END IF;
/* o_tempcode 模板編碼
o_contnumber 合同編號
o_contname 合同名稱
o_datajson 填充數據
o_savepath 保存路徑 */
V_COLIST := 'o_tempcode,o_contnumber,o_contname,o_datajson,o_savepath';
也可以參考以下地址:
https://blog.csdn.net/zy103118/article/details/86300243