CREATE OR REPLACE FUNCTION QUERYEXCEPIONAPPLY (
QYID IN VARCHAR2,
JKDID IN VARCHAR2-- 注意入參和返回值不用定義長度
)
RETURN VARCHAR2
AS
YCDATA VARCHAR2(100); --定義變量需要定義函數
QYEXNUM INT :=0;
BEGIN
SELECT COUNT(1) INTO QYEXNUM
FROM ZTS_TCQYGL TC
WHERE TC.T_BEGINTIME <= TRUNC(SYSDATE)
AND TC.T_ENDTIME >= TRUNC(SYSDATE)
AND TC.T_SHZT = 'ycshzt003'
AND TC.T_HFSCSJ IS NULL
AND T_QYID = QYID ;
IF(QYEXNUM > 0) THEN
SELECT YCCODE||':'||GUID INTO YCDATA
FROM (
SELECT GUID, T_QYID, '1' YCCODE, '' T_JKDID, T_APPLYTIME
FROM ZTS_TCQYGL TC
WHERE TC.T_BEGINTIME <= TRUNC(SYSDATE)
AND TC.T_ENDTIME >= TRUNC(SYSDATE)
AND TC.T_SHZT = 'ycshzt003'
AND TC.T_HFSCSJ IS NULL
AND T_QYID = QYID
ORDER BY TC.T_APPLYTIME DESC
) WHERE ROWNUM = 1;
ELSE
SELECT YCCODE||':'||GUID INTO YCDATA
FROM (SELECT GUID, T_QYID, YCCODE, T_JKDID, T_APPLYTIME
FROM (
SELECT GUID, T_QYID, '2' YCCODE, PK.T_JKDID, T_APPLYTIME
FROM ZTS_PKYCGL PK
WHERE PK.T_BEGINTIME <= TRUNC(SYSDATE)
AND PK.T_ENDTIME >= TRUNC(SYSDATE)
AND PK.T_SHZT = 'ycshzt003'
AND PK.T_HFSCSJ IS NULL
UNION ALL
SELECT GUID, T_QYID, '3' YCCODE, JX.T_JKDID T_JKDID, T_APPLYTIME
FROM ZTS_JXXPFJH JX
WHERE JX.T_BEGINTIME <= TRUNC(SYSDATE)
AND JX.T_ENDTIME >= TRUNC(SYSDATE)
UNION ALL
SELECT GUID, T_QYID, '4' YCCODE, YZ.T_JKDID, T_APPLYTIME
FROM ZTS_YZYCGL YZ
WHERE YZ.T_BEGINTIME <= TRUNC(SYSDATE)
AND YZ.T_ENDTIME >= TRUNC(SYSDATE)
AND YZ.T_SHZT = 'ycshzt003'
AND YZ.T_HFSCSJ IS NULL
)WHERE 1=1 AND T_QYID = QYID AND T_JKDID = JKDID
ORDER BY YCCODE, T_APPLYTIME DESC)
WHERE ROWNUM = 1;
END IF;
RETURN YCDATA;
END;
Oracle 存儲函數 使用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.