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;
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值