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
    评论
Oracle存储函数是一种在数据库中创建和使用的可重复使用的程序单元。存储函数通过接收输入参数并返回结果来执行特定的计算或操作。 要创建Oracle存储函数,首先需要使用CREATE FUNCTION语句指定函数的名称、输入参数和返回数据类型。然后,使用BEGIN和END关键字定义函数的主体,可以在主体中编写一系列的SQL语句和逻辑操作来实现特定的功能。最后,使用RETURN关键字指定函数的返回结果。 使用Oracle存储函数时,可以将函数作为一个完整的表达式或SELECT语句的一部分来调用。在调用函数时,需要提供函数所需的输入参数,并可以使用函数返回的结果进行进一步的计算或操作。 存储函数在数据库中的使用有以下几点优势: 1.可重复使用存储函数可以在多个地方多次调用,避免了重复编写相同的计算逻辑,提高了代码的复用性和可维护性。 2.封装复杂逻辑:存储函数可以被用来封装一系列的SQL语句和逻辑操作,使复杂的计算变得简单和易于理解。 3.提高性能:存储函数的执行速度通常比在应用程序中执行相同的操作要快,因为函数在数据库中直接执行,无需通过网络传输数据。 4.安全性和一致性:存储函数可以通过权限管理机制进行安全控制,只有具有相应权限的用户才能使用和修改函数。 总之,Oracle存储函数的创建和使用是一种强大的数据库特性,可以提高代码的复用性和可维护性,简化复杂的计算逻辑,并提高数据库的性能和安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值