Oracle 存儲函數 使用

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;
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章