网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.vim 使用技巧.
.高速的导出/导入:Oracle Data P.
.在不同字符集的数据库之间导入数.
.Oracle TNSListener服务启动后自.
.Eclipse是如何连接Oracle数据库的.
.在存储过程中连接远程数据库并进.
.Linux 8.0 安装 Oracle 9i.
.如何可以在RHAS3上成功安装Oracl.
.在 Python环境下连接Oracle数据库.
.Oracle9i 数据库管理实务讲座(四).
.如何在相对空闲的rac实例中强制自.
.使用Oracle9i全索引扫描快速访问.
.Oracle 10g DBMS_SCHEDULER的中度.
.使数据库为归档模式.
.相同软件环境下Oracle9i数据库迁.
.Oracle10g自动归档的设置.
.Oracle 10g RAC与SLES9.
.某人的oracle9i学习笔记,与大家.
.Oracle作业(JOB)更新next_date的.
.ORACLE 错误信息报告程序.

用一个实例讲解Oracle的自定义聚集函数

发表日期:2008-5-5


Oracle数据库的定制功能十分强大。Oracle不但允许用户定制自己的函数,还可以定制自己的聚集函数和分析函数。

本文将着重介绍使用自定义聚集函数建立一个字符串“sum”的示例:

SQL> CREATE OR REPLACE TYPE T_LINK AS OBJECT (

2 STR VARCHAR2(30000),

3 STATIC FUNCTION ODCIAGGREGATEINITIALIZE

(SCTX IN OUT T_LINK) RETURN NUMBER,

4 MEMBER FUNCTION ODCIAGGREGATEITERATE

(SELF IN OUT T_LINK, VALUE IN VARCHAR2) RETURN NUMBER,

5 MEMBER FUNCTION ODCIAGGREGATETERMINATE

(SELF IN T_LINK, RETURNVALUE OUT VARCHAR2, FLAGS IN NUMBE

R) RETURN NUMBER,

6 MEMBER FUNCTION ODCIAGGREGATEMERGE

(SELF IN OUT T_LINK, CTX2 IN T_LINK) RETURN NUMBER

7 )

8 /

类型已创建。

SQL> CREATE OR REPLACE TYPE BODY T_LINK IS

2 STATIC FUNCTION ODCIAGGREGATEINITIALIZE

(SCTX IN OUT T_LINK) RETURN NUMBER IS

3 BEGIN

4 SCTX := T_LINK(NULL);

5 RETURN ODCICONST.SUCCESS;

6 END;

7

8 MEMBER FUNCTION ODCIAGGREGATEITERATE

(SELF IN OUT T_LINK, VALUE IN VARCHAR2) RETURN NUMBER IS

9 BEGIN

10 SELF.STR := SELF.STR || VALUE;

11 RETURN ODCICONST.SUCCESS;

12 END;

13

14 MEMBER FUNCTION ODCIAGGREGATETERMINATE

(SELF IN T_LINK, RETURNVALUE OUT VARCHAR2, FLAGS IN NUMBE

R) RETURN NUMBER IS

15 BEGIN

16 RETURNVALUE := SELF.STR;

17 RETURN ODCICONST.SUCCESS;

18 END;

19

20 MEMBER FUNCTION ODCIAGGREGATEMERGE

(SELF IN OUT T_LINK, CTX2 IN T_LINK) RETURN NUMBER IS

21 BEGIN

22 NULL;

23 RETURN ODCICONST.SUCCESS;

24 END;

25 END;

26 /

类型主体已创建。

SQL> CREATE OR REPLACE FUNCTION F_LINK

(P_STR VARCHAR2) RETURN VARCHAR2

2 AGGREGATE USING T_LINK;

3 /

函数已创建。

SQL> CREATE TABLE TEST (ID NUMBER, NAME VARCHAR2(20));

表已创建。

SQL> INSERT INTO TEST VALUES (1, 'AAA');

已创建 1 行。

SQL> INSERT INTO TEST VALUES (2, 'BBB');

已创建 1 行。

SQL> INSERT INTO TEST VALUES (1, 'ABC');

已创建 1 行。

SQL> INSERT INTO TEST VALUES (3, 'CCC');

已创建 1 行。

SQL> INSERT INTO TEST VALUES (2, 'DDD');

已创建 1 行。

SQL> COMMIT;

提交完成。

SQL> COL NAME FORMAT A60

SQL> SELECT ID, F_LINK(NAME) NAME FROM TEST GROUP BY ID;

ID NAME

---------- ------------------------------------------------------

1 AAAABC

2 BBBDDD

3 CCC

上一篇:如何将Oracle数据库的普通表转换成分区表 人气:690
下一篇:如何使用DBMS_REPAIR检测和修补数据坏块 人气:694
浏览全部Oracle的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐