oracle聚合函数wmsys,oracle 自定义聚合函数

oracle提供了聚合函数的API可以让我们方便的自己定义聚合函数。

详细看oracle官方文档:

http://docs.oracle.com/cd/B14117_01/appdev.101/b10800/dciaggref.htm

http://docs.oracle.com/cd/B14117_01/appdev.101/b10800/dciaggfns.htm#g1008306

wmsys.wm_concat(合并行函数)是一个很好的例子:

FUNCTION wm_concat(P1 VARCHAR2) RETURN CLOB AGGREGATE USING WMSYS.WM_CONCAT_IMPL ;

TYPE wm_concat_impl AUTHID CURRENT_USER AS OBJECT

(

CURR_STR    VARCHAR2(32767),

CURR_STR_C  CLOB,

STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT WM_CONCAT_IMPL) RETURN NUMBER,

MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT WM_CONCAT_IMPL, P1 VARCHAR2) RETURN NUMBER,

MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF WM_CONCAT_IMPL, RETURNVALUE OUT CLOB, FLAGS NUMBER) RETURN NUMBER,

MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT WM_CONCAT_IMPL, SCTX2 WM_CONCAT_IMPL) RETURN NUMBER

);

TYPE BODY wm_concat_impl IS

STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT WM_CONCAT_IMPL) RETURN NUMBER IS

BEGIN

SCTX := WM_CONCAT_IMPL(NULL,NULL) ;

RETURN ODCICONST.SUCCESS;

END;

MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT WM_CONCAT_IMPL, P1 VARCHAR2) RETURN NUMBER IS

BEGIN

IF (CURR_STR_C IS NULL AND (CURR_STR IS NULL OR LENGTH(CURR_STR)<29950)) THEN

IF(CURR_STR IS NOT NULL) THEN

CURR_STR := CURR_STR || ',' || P1;

ELSE

CURR_STR := P1;

END IF;

ELSE

IF (CURR_STR_C IS NULL) THEN

CURR_STR_C := CURR_STR ;

CURR_STR := NULL ;

END IF ;

CURR_STR_C := CURR_STR_C || ',' || P1;

END IF ;

RETURN ODCICONST.SUCCESS;

END;

MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF WM_CONCAT_IMPL, RETURNVALUE OUT CLOB, FLAGS NUMBER) RETURN NUMBER IS

BEGIN

IF (CURR_STR IS NOT NULL) THEN

RETURNVALUE := CURR_STR ;

ELSE

RETURNVALUE := CURR_STR_C ;

END IF ;

RETURN ODCICONST.SUCCESS;

END;

MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT WM_CONCAT_IMPL, SCTX2 WM_CONCAT_IMPL) 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;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/195110/viewspace-1682558/,如需转载,请注明出处,否则将追究法律责任。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/475122.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

欧洲杯2012

----------------------------------------------------------------------------- 欧洲杯2012 ----------------------------------------------------------------------------- 下载地址&#xff1a;http://itunes.apple.com/cn/app/ou-zhou-bei2012/id531622806?mt8 系统要…

LeetCode 245. 最短单词距离 III

文章目录1. 题目2. 解题1. 题目 给定一个单词列表和两个单词 word1 和 word2&#xff0c;返回列表中这两个单词之间的最短距离。 word1 和 word2 是有可能相同的&#xff0c;并且它们将分别表示为列表中两个独立的单词。 示例: 假设 words ["practice", "ma…

oracle 汇总上面所有,Oracle经验技巧汇总

Oracle经验技巧汇总对于Oracle学习者来说&#xff0c;掌握一些经验技巧是很有必要的&#xff0c;下面就和小编一起来学习学习吧!1.删除表空间DROP TABLESPACE TableSpaceName [INCLUDING CONTENTS [AND DATAFILES]]2.删除用户DROP USER User_Name CASCADE3.删除表的注意事项在删…

think in java - 第一章 学习笔记

总观第一章&#xff0c;作者试图为我们讲述面向对象编程&#xff08;oop&#xff09;的核心思想&#xff0c;而我的见解是&#xff0c;对象是对具体事物的一种抽象&#xff0c;对象与对象直接的关系通过消息联系。 关于类的三大特性&#xff1a;继承&#xff0c;多态&#xff0…

LeetCode 484. 寻找排列(找规律+贪心)

文章目录1. 题目2. 解题1. 题目 现在给定一个只由字符 ‘D’ 和 ‘I’ 组成的 秘密签名。 ‘D’ 表示两个数字间的递减关系&#xff0c;‘I’ 表示两个数字间的递增关系。 并且 秘密签名 是由一个特定的整数数组生成的&#xff0c;该数组唯一地包含 1 到 n 中所有不同的数字&a…

php将文件夹压缩成zip文件,将文件夹压缩成zip文件的php代码_php实例

1.请先下载我准备好的zip.php工具类&#xff0c;下载后解压&#xff0c;将里面的文件放入对应的目录中&#xff0c;我是放在虚拟目录下的include文件夹中。2.在你的php文件中加入下面代码即可复制代码 代码如下:require_once "./include/zip.php";$zip new PHPZip()…

LeetCode 651. 4键键盘(DP,Ctrl+CV)

文章目录1. 题目2. 解题1. 题目 假设你有一个特殊的键盘包含下面的按键&#xff1a; Key 1: (A)&#xff1a;在屏幕上打印一个 A。Key 2: (Ctrl-A)&#xff1a;选中整个屏幕。Key 3: (Ctrl-C)&#xff1a;复制选中区域到缓冲区。Key 4: (Ctrl-V)&#xff1a;将缓冲区内容输出…

stl algorithm -- sort ,unique

在写私信群聊代码的时候碰到怎么把一个vector<Int> 元素unique化的问题&#xff0c;基本上就是需要下面这么做&#xff0c;用<algorithm>中的&#xff0c;先sort再unique 1 #include <algorithm>2 #include <iostream>3 #include <vector>4 #inc…

oracle scn隐藏参数,Oracle隐含参数scn不一致启动

Oracle隐含参数&#xff1a;allow_resetlogs_corruption的使用提示&#xff1a;Oracle的隐含参数只应该在测试环境或者在Oracle Support的支持下使用orOracle隐含参数&#xff1a;allow_resetlogs_corruption的使用提示&#xff1a;Oracle的隐含参数只应该在测试环境或者在Orac…

LeetCode 298. 二叉树最长连续序列(自顶向下)

文章目录1. 题目2. 解题1. 题目 给你一棵指定的二叉树&#xff0c;请你计算它最长连续序列路径的长度。 该路径&#xff0c;可以是从某个初始结点到树中任意结点&#xff0c;通过「父 - 子」关系连接而产生的任意路径。 这个最长连续的路径&#xff0c;必须从父结点到子结点…

LeetCode 159. 至多包含两个不同字符的最长子串(滑动窗口)

文章目录1. 题目2. 解题1. 题目 给定一个字符串 s &#xff0c;找出 至多 包含两个不同字符的最长子串 t &#xff0c;并返回该子串的长度。 示例 1: 输入: "eceba" 输出: 3 解释: t 是 "ece"&#xff0c;长度为3。示例 2: 输入: "ccaabbb" 输…

linux nginx 图片服务器,搭建Nginx图片服务器(Linux)

wget http://nginx.org/download/nginx-1.19.1.tar.gzyum install gcc-cyum install -y pcre pcre-develyum install -y zlib zlib-develyum install -y openssl openssl-devel进入nginx目录./configure --prefix/usr/local/nginx --pid-path/var/run/nginx/nginx.pid --loc…

LeetCode 163. 缺失的区间

文章目录1. 题目2. 解题1. 题目 给定一个排序的整数数组 nums &#xff0c;其中元素的范围在 闭区间 [lower, upper] 当中&#xff0c;返回不包含在数组中的缺失区间。 示例&#xff1a;输入: nums [0, 1, 3, 50, 75], lower 0 和 upper 99, 输出: ["2", "…

linux chmod修改权限失败,【Linux】chmod修改文件权限

在Linux系统中输入chmod -- help 输出如下&#xff1a;lilinchuanlilinchuan-VPCEA27EC:~$ chmod --help用法&#xff1a;chmod [选项]... 模式[,模式]... 文件...或&#xff1a;chmod [选项]... 八进制模式 文件...或&#xff1a;chmod [选项]... --reference参考文件 文件...…

小白学数据分析-----聚类分析理论之TwoSteps理论篇+实践篇

昨天分享了以前学习的聚类分析算法K-Means的部分知识&#xff0c;其实这个主要是了解一下这个算法的原理和适用条件就行了&#xff0c;作为应用而不是作为深入研究&#xff0c;能够很好的将业务和算法模型紧密结合的又有几人呢&#xff1f;所以一些基本知识还是很必要的&#x…

LeetCode 244. 最短单词距离 II(哈希map+set二分查找)

文章目录1. 题目2. 解题2.1 暴力超时2.2 哈希表set二分查找1. 题目 请设计一个类&#xff0c;使该类的构造函数能够接收一个单词列表。 然后再实现一个方法&#xff0c;该方法能够分别接收两个单词 word1 和 word2&#xff0c;并返回列表中这两个单词之间的最短距离。 您的方法…

Linux查看指定进程占用mem,Linux查看占用mem的进程脚本

#!/bin/bash############################################################################### 脚本功能 &#xff1a; 列出正在占用mem的进程。Rss&#xff1a;物理内存Swap&#xff1a;虚拟内存#########################################################################…

从根本上解决 Infopath 2010 重复表的序号问题

经过多长期的查找资料&#xff0c;今天终于找到如何解决Infopath 重复表序号的问题&#xff0c;其实也很简单只用Xpath 语法就可以了 count(../preceding-sibling::*[local-name() "ExpensiveDetail"])1 ExpensiveDetail 是重复表的名字 转载于:https://www.cnblog…

linux怎么将进程调优到8,Linux的性能调优命令

性能调优一直是运维工程师最重要的工作之一&#xff0c;如果您所在的生产环境中遇到了系统响应速度慢&#xff0c;硬盘IO吞吐量异常&#xff0c;数据处理速度低于预期值的情况&#xff0c;又或者如CPU、内存、硬盘、网络等系统资源长期处于耗尽的状态&#xff0c;那么这篇文章将…

LeetCode 161. 相隔为 1 的编辑距离(DP/遍历)

文章目录1. 题目2. 解题2.1 DP超时2.2 一次遍历1. 题目 给定两个字符串 s 和 t&#xff0c;判断他们的编辑距离是否为 1。 注意&#xff1a; 满足编辑距离等于 1 有三种可能的情形&#xff1a; 往 s 中插入一个字符得到 t从 s 中删除一个字符得到 t在 s 中替换一个字符得到 …