应用场景:
权限管理:同一功能对同一用户有多个不同权限设置(1-允许/0-默认/-1禁用),取组合后的权限值。
--聚合函数就是一个对象
create or replace type permission_sign_object as object (
--对象变量
permission_sign number(1),
--对象初始化
static function ODCIAggregateInitialize(v_self in out permission_sign_object) return number,
--聚合函数的迭代方法
member function ODCIAggregateIterate(self in out permission_sign_object, value in number) return number,
--当查询语句并行运行时,才会使用该方法,可将多个并行运行的查询结果聚合
member function ODCIAggregateMerge(self in out permission_sign_object, v_next in permission_sign_object) return number,
--终止聚集函数的处理,返回聚集函数处理的结果
Oracle 自带的wmsys.wm_concat 函数是有长度限制的。然而需求是在不断变化,当自带的东西不能适应我们需求的时候,就需要发挥我们自己的智慧去扩展。
create or replace TYPE zh_concat_im AUTHID CURRENT_USER AS OBJECT ( CURR_STR clob, STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT zh_concat_im) RETURN NUMBER, MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT zh_concat_im, P1 IN VARCHAR2) RETURN NUMBER, MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN zh_concat_im, RETURNVALUE OUT VARCHAR2, FLAGS IN NUMBER) RETURN NUMBER, MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT zh_concat_im, SCTX2 IN zh_concat_im) RETURN NUMBER ); / create or replace TYPE BODY zh_concat_im IS STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT zh_concat_im) RETURN NUMBER IS BEGIN SCTX := zh_concat_im(NULL) ; RETURN ODCICONST.SUCCESS; END; MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT zh_concat_im, P1 IN VARCHAR2) RETURN NUMBER IS BEGIN IF(CURR_STR IS NOT NULL) THEN CURR_STR := CURR_STR || ',' || P1; ELSE CURR_STR := P1; END IF; RETURN ODCICONST.SUCCESS; END; MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN zh_concat_im, RETURNVALUE OUT VARCHAR2, FLAGS IN NUMBER) RETURN NUMBER IS BEGIN RETURNVALUE := CURR_STR ; RETURN ODCICONST.SUCCESS; END; MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT zh_concat_im, SCTX2 IN zh_concat_im) RETURN NUMBER IS BEGIN IF(SCTX2.CURR_STR IS NOT NULL) THEN SELF.CURR_STR := SELF.CURR_STR || ',' || SCTX2.CURR_STR ; END IF; RETURN ODCICONST.SUCCESS; END; END; / 函数: create or replace FUNCTION zh_concat(P1 VARCHAR2) RETURN VARCHAR2 AGGREGATE USING zh_concat_im ;
相关推荐
Oracle自定义聚合函数,分析函数.
oracle自定义日期函数、你值得拥有!
* 自定义聚合函数 wmsys.wm_concat 替换办法 * 超大字符串拼接,单个字符串4000、分隔符100,可拼出超4000的超长字符串 * 可自定义指定分隔符separator * 可自定义指定排序字段sequence,对于数字或日期类型的...
oracle自定义函数的总结,主要对如何定义函数以及使用。
主要介绍了Oracle自定义脱敏函数的实例代码,代码简单易懂,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下
Oracle聚合函数Oracle聚合函数Oracle聚合函数
关于Oracle自定义聚集函数的使用 。
Oracle自定义函数,很详细的教程,各种函数自定义的详细讲解。
oracle 自定义函数 解析文件以“|”分割字符串
oracle数据库,使用自定义函数,实现了金额的大写转换。sql语句中,直接调用此函数即可得到金额大写。
C#调用Oracle自定义类型存储过程,Oracle存储入参为type类型,对于不熟悉Oracle朋友,可以参考来调用。实现思路和正常调MSSQL一样,先建立连接,再定义一个IOracleCustomType的类,然后Oracle.DataAccess.dll的...
一、函数的创建、调用和权限1、创建函数create or replace function 函数名(参数1 模式 数据类型,) return 数据类型as --
oracle日期函数字符函数聚合函数
ORACLE crc3函数,将字符类型转换成唯一的数字类型,例如CSDN,经过crc32函数转换后,得到的值为-1016176976
Oracle效验统一代码正确性的自定义函数,效验规则以国标为准.
Oracle自定义函数返回一张表。主要用于生成一张等时间间隔的表数据。
自定义函数不能被直接在Java中调用,可以通过存储过程调用函数的方法。本文采用实例的方法,介绍如何在Oracle数据库客户端PL/SQL中创建自定义函数,然后创建相应的存储过程调用该函数,最终实现一个实例计算。
包含自定义身份证函数,小写转大写等等。自己总结了很长时间,以后会继续更新的。
主要介绍了Oracle 自定义split 函数实例详解的相关资料,需要的朋友可以参考下