您的位置:首页 > 数据库 > Oracle

关于oracle9以上自定义聚集函数的例子

2006-10-30 10:48 513 查看
以下是自定义聚集函数的代码例子, 抄自http://yangtingkun.itpub.net/post/468/3380


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 /
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: