`
hongwei3344661
  • 浏览: 31864 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

Oracle自定义函数

 
阅读更多

示例代码:

[sql] view plain copy
 
  1. CREATE OR REPLACE  FUNCTION "MY_DATABASE"."F_GET_USER_COUNT_BY_DEPART"   
  2.     (  
  3.     DEPART_ID_VAL in long   
  4. )  
  5. return varchar2  
  6. is  
  7. USER_STATE varchar(16);   
  8. USER_COUNT number;  
  9. begin  
  10.      select count(*) into USER_COUNT from TB_USER_INFO where DEPART_ID=DEPART_ID_VAL;  
  11.        
  12.      if USER_COUNT > 0 then  
  13.         USER_STATE:='该部门下有用户';  
  14.      else  
  15.         USER_STATE:='该部门下无用户';  
  16.      end if;  
  17.        
  18.      return (USER_STATE);  
  19. end;  

 

 

解释:

[sql] view plain copy
 
  1. CREATE OR REPLACE  FUNCTION "数据库名称"."函数名"   
  2.     (  
  3.     参数一 [in,out] 类型,  
  4.     参数二 [in,out] 类型,  
  5.     ...   
  6. )  
  7. return 返回值类型  
  8. is  
  9.     变量一 类型;  
  10.     变量二 类型;  
  11.     ... ;  
  12. begin  
  13.      /*给变量赋值的过程*/  
  14.        
  15.      return (变量一或变量二或...);  
  16. end;  

 

  1. 参数有两种类型,in或者out;可以创建不带参数的函数;
  2. 多个参数之间用“,”隔开;多个变量之间用“;”隔开;
  3. CREATE OR REPLACE FUNCTION INFODBA.H3C_GetECADocNumListByECROBID (ECRPUID IN VARCHAR2)
  4.    RETURN VARCHAR2
  5. /*
  6.   用途:依据传入的【ECRPUID】获取该ECR下的所有ECA的单号列表,多条以逗号分隔       
  7. */
  8. IS
  9.    ExecSQL      VARCHAR2 (1000);
  10.    RESULT       VARCHAR2 (1000);
  11.    TMPESULT     VARCHAR2 (1000);
  12. BEGIN
  13.  
  14.    --1.如果传入的ECR的OBID是空,则直接返回一个空字符串
  15.    IF (LENGTH (ECRPUID)<1) THEN
  16.      RETURN ('Err:函数参数输入不正确,请联系系统管理员调整SQL!');
  17.    END IF;
  18.  
  19.    --2. 循环查询结果,逐一拼接SQL,执行获取ECA申请单号,并拼接成以逗号为分隔符的字符串
  20.    FOR ECAList IN ( SELECT ITEM.PITEM_ID 
  21.                       FROM infodba.pimanrelation s2ECRECA,
  22.                            infodba.pitem item,
  23.                            infodba.pitemrevision itemrevision
  24.                      WHERE 1 = 1
  25.                            AND itemrevision.ritems_tagu = item.PUID
  26.                            AND itemrevision.PUID = s2ECRECA.RSECONDARY_OBJECTU
  27.                            AND s2ECRECA.RPRIMARY_OBJECTU = ECRPUID
  28.                     )
  29.    LOOP        
  30.  
  31.          --如果有查询结果,则拼接'
  32.          IF (NVL(ECAList.PITEM_ID,'NoRecords') != 'NoRecords') THEN
  33.                 RESULT := RESULT ||ECAList.PITEM_ID || ',';
  34.          END IF;
  35.  
  36.    END LOOP;
  37.  
  38.    --截取掉最后一个多余的逗号
  39.    RESULT := SUBSTR (RESULT, 0, LENGTH (RESULT) - 1);
  40.  
  41.    RETURN result;
  42.  
  43. EXCEPTION
  44.    WHEN OTHERS
  45.    THEN
  46.       RETURN  ('Err:可能的出错原因是从PDM读取的字符串超长,请联系PDM系统管理员处理。');
  47. END;
  48. /

 

 

DROP TRIGGER INFODBA.TRIGGER_PROTECT_PDATA_UPDATE;

 

CREATE OR REPLACE TRIGGER INFODBA.TRIGGER_PROTECT_PDATA_UPDATE

BEFORE UPDATE ON INFODBA.PDATA referencing old as OLDROW new as NEWROW

for each row

DECLARE   

BEGIN

  

  IF (ABS(LENGTH(:OLDROW.PVAL)-LENGTH(:NEWROW.PVAL))>100) THEN          

    RAISE_APPLICATION_ERROR(-20000, 'Illegal behavior,if there is a need, please contact the administrator to stop the trigger TRIGGER_PROTECT_PDATA_UPDATE.');

  END IF;

END;

 

/

 

分享到:
评论

相关推荐

    14.Oracle自定义函数1

    在 Oracle 数据库中,自定义函数是一种非常重要的特性,允许用户根据需求创建自己的功能模块,以扩展数据库的内置功能。本文将详细讲解如何创建、调用和管理自定义函数,以及讨论它们在实际应用中的优缺点。 一、...

    oracle自定义函数总结

    本文将详细介绍Oracle自定义函数的定义、使用方法以及一些高级特性。 #### 二、基本语法与定义 1. **定义函数的基本语法**: ```sql CREATE [OR REPLACE] FUNCTION function_name (参数列表) RETURN 返回类型 ...

    oracle 自定义函数 解析文件以“|”分割字符串

    oracle 自定义函数 解析文件以“|”分割字符串

    oracle自定义日期函数

    Oracle 自定义日期函数 Oracle 日期处理函数是数据库管理系统中非常重要的一部分,最近看到有人在做 T-SQL 与 PL/SQL 的转化,问了些有关时间函数的处理。在 PL/SQL 中,Oracle 提供了其他的方法来处理日期函数,...

    Oracle自定义加密解密函数:数据安全合规·数据脱敏·加密存储高效解决方案

    3、兼容性与灵活性: 适用于各种 Oracle 数据库环境,无论是本地部署还是云数据库,均可无缝集成,满足不同场景需求。 4、详尽注释文档: 提供了完整的函数代码及详细的注释说明,便于用户快速理解与应用,同时降低...

    Oracle函数返回表

    Oracle自定义函数返回一张表。主要用于生成一张等时间间隔的表数据。

    oracle自定义函数实现金额转换为大写

    oracle数据库,使用自定义函数,实现了金额的大写转换。sql语句中,直接调用此函数即可得到金额大写。

    Oracle10g自定义聚合函数(字符串拼接)

    * 自定义聚合函数 wmsys.wm_concat 替换办法 * 超大字符串拼接,单个字符串4000、分隔符100... * Oracle11g Release2版本引入了LISTAGG 函数,使得聚集连接字符串变得很容易。并且允许使用我们指定连接串中的字段顺序

    Oracle自定义聚合函数-分析函数

    Oracle 自定义聚合函数-分析函数 Oracle 自定义聚合函数是一种强大且灵活的功能,允许用户根据自己的需求创建自定义的聚合函数。聚合函数是一种特殊的函数,它可以对一组数据进行处理和计算,并返回一个结果。 ...

    手机号安全脱敏工具方案:Oracle自定义函数实现中间四位替换为4位星号

    1. 高效性:此函数针对Oracle数据库环境进行了优化,能够快速处理大量数据,显著提升数据处理效率。 2. 安全性:通过将手机号码的中间四位替换为星号(*),有效防止了敏感信息泄露,满足GDPR等国际隐私法规的要求。 3...

    Oracle统一社会信用代码自定义效验函数

    在IT行业中,数据库管理系统(DBMS)如...总结来说,这个Oracle自定义函数是针对统一社会信用代码的效验工具,遵循国家的效验规则,确保在数据库中存储的USCC信息的准确无误,这对于在中国进行合规操作的企业至关重要。

    hibernate 调用oracle函数

    1. **创建Oracle函数**:在Oracle数据库中,我们首先需要创建一个自定义函数。例如,我们可以创建一个计算两个数字之和的函数`ADD_NUMBERS`: ```sql CREATE OR REPLACE FUNCTION ADD_NUMBERS(p_num1 NUMBER, p_...

    Oracle 自定义函数

    包含自定义身份证函数,小写转大写等等。自己总结了很长时间,以后会继续更新的。

    ORACLE CRC32函数

    ### ORACLE CRC32函数详解 #### 一、概述 在Oracle数据库中,`CRC32`函数是一种非常实用的功能,主要用于将字符类型的数据转换为一个唯一的数字类型,这一过程通常被称为散列(Hash)。通过该函数,可以方便地生成...

    Oracle自定义脱敏函数的代码详解

    Oracle自定义脱敏函数是数据库管理中用于保护敏感数据的一种常见方法,尤其是在处理用户个人信息时。本文将深入解析Oracle自定义脱敏函数的实现细节,以确保在数据共享、备份或分析时不泄露关键信息。 首先,我们来...

    Oracle游标视图和自定义函数

    ### Oracle游标、视图和自定义函数 #### 1. 游标 **1.1 游标的优势和类型** 在数据库应用开发过程中,游标作为一种强大的工具,为开发者提供了一种处理从表中检索出的数据的有效方法,特别是在需要逐条处理数据...

    Oracle存储过程、自定义函数、动态建表存储过程等例子

    2. **Oracle自定义函数**: 自定义函数与存储过程类似,但它们通常用于返回单个值。函数可以在查询中直接使用,比如在SELECT语句中,增强查询的灵活性。比如,你可以编写一个计算折扣的函数,根据客户等级返回不同...

Global site tag (gtag.js) - Google Analytics