--包头
CREATE OR REPLACE PACKAGE TESTPACKAGE IS
TYPE MYCURSOR IS REF CURSOR; -- 定义游标变量
-- 定义过程,用游标变量作为返回参数
PROCEDURE GETRECORDS(
RET_CURSOR OUT MYCURSOR ,
P_BIZTYPE VARCHAR2:=NULL,-- 业务类型
P_DATE_START VARCHAR2:=NULL,-- 起始时间
P_DATE_END VARCHAR2:=NULL, -- 结束时间
P_CUSTOM_CODE VARCHAR2:=NULL--关区代码
);
END TESTPACKAGE;
--包体
CREATE OR REPLACE PACKAGE BODY TESTPACKAGE IS
/*过程体*/
PROCEDURE GETRECORDS(
RET_CURSOR OUT MYCURSOR , --返回值
P_BIZTYPE VARCHAR2:=NULL,-- 业务类型
P_DATE_START VARCHAR2:=NULL,-- 起始时间
P_DATE_END VARCHAR2:=NULL, -- 结束时间
P_CUSTOM_CODE VARCHAR2:=NULL--关区代码
) AS
--ROW_DEPT CUR_CONNECTNO%ROWTYPE;
--V_SQL VARCHAR2(3000);--sql语句
DAN VARCHAR2(2000);
BEGIN
--CUR_CONNECTNO 该游标用于存放每个业务查询出的结果集
--A业务
IF P_BIZTYPE='A' THEN
CURSOR CUR_CONNECTNO IS
SELECT A.ID AS GJ_NO
FROM GJ_A A
WHERE TO_CHAR(A.GDATETIME,'YYYY/MM/DD') >=P_DATE_START
AND TO_CHAR(A.GDATETIME,'YYYY/MM/DD') >=P_DATE_END;
END IF;
--点击查询全部业务类型时,连接
/* IF P_BIZTYPE='' THEN
V_SQL+=' UNION ALL '
END IF;*/
--B业务
IF P_BIZTYPE='B' THEN
CURSOR CUR_CONNECTNO IS
SELECT A.NO AS GJ_NO
FROM GJ_B A
WHERE A.I_E_MARK='1'
AND TO_CHAR(A.GDATETIME,'YYYY/MM/DD') >=P_DATE_START
AND TO_CHAR(A.GDATETIME,'YYYY/MM/DD') >=P_DATE_END;
END IF;
--M业务
IF P_BIZTYPE='M' THEN
CURSOR CUR_CONNECTNO IS
SELECT A.NO AS GJ_NO
FROM GJ_M A
WHERE SUBSTR(A.NO,3,1)='M'
AND TO_CHAR(A.GDATETIME,'YYYY/MM/DD') >=P_DATE_START
AND TO_CHAR(A.GDATETIME,'YYYY/MM/DD') >=P_DATE_END;
END IF;
/*IF P_BIZTYPE='' THEN
V_STR+=' UNION ALL '
END IF;*/
--G
IF P_BIZTYPE='G' THEN
CURSOR CUR_CONNECTNO IS
SELECT A.NO AS GJ_NO
FROM GJ_G A
WHERE TO_CHAR(A.GDATETIME,'YYYY/MM/DD') >=P_DATE_START
AND TO_CHAR(A.GDATETIME,'YYYY/MM/DD') >=P_DATE_END;
END IF;
/*IF P_BIZTYPE='' THEN
V_STR+=' UNION ALL '
END IF;*/
--E 业务
IF P_BIZTYPE='E' || P_BIZTYPE='' THEN
CURSOR CUR_CONNECTNO IS
SELECT A.NO AS GJ_NO
FROM GJ_E A
WHERE A.MARK='2'
AND TO_CHAR(A.GDATETIME,'YYYY/MM/DD') >=P_DATE_START
AND TO_CHAR(A.GDATETIME,'YYYY/MM/DD') >=P_DATE_END;
END IF;
-- 创建临时表
/* CREATE GLOBAL TEMPORARY TABLE TEMP_TBL(gj_no VARCHAR2(30),COL_A VARCHAR2(30),COL_A VARCHAR2(30))
ON COMMIT DELETE ROWS ;*/
FOR HAHA IN CUR_CONNECTNO LOOP
--根据上述业务查出的数据 再在次记录表中是否 存在 ,若存在就把数据 取出来
-- 取出来 想保存到临时表中。 该怎么写
SELECT *
FROM RD_Z Z
WHERE BIZ_TYPE = P_BIZTYPE
AND Z.NO=HAHA.GJ_NO ;
END LOOP;
--最后想用该游标来存放临时表中的数据集 来返回去
--OPEN RET_CURSOR FOR
END GETRECORDS;
END TESTPACKAGE;