免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
對字符串的“sum”——在Oracle中自定義聚集函數(shù)的例子
對字符串的“sum”——在Oracle中自定義聚集函數(shù)的例子
===========================================================

Oracle的定制功能十分強(qiáng)大。前幾天在碰到一個問題的時候,查詢文檔發(fā)現(xiàn),oracle不但允許用戶定制自己的函數(shù),還可以定制自己的聚集函數(shù)和分析函數(shù)。

下面是我使用自定義聚集函數(shù)建立一個字符串“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  /

類型已創(chuàng)建。

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  /

類型主體已創(chuàng)建。

SQL> CREATE OR REPLACE FUNCTION F_LINK(P_STR VARCHAR2) RETURN VARCHAR2
  2  AGGREGATE USING T_LINK;
  3  /

函數(shù)已創(chuàng)建。

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

表已創(chuàng)建。

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

已創(chuàng)建 1 行。

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

已創(chuàng)建 1 行。

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

已創(chuàng)建 1 行。

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

已創(chuàng)建 1 行。

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

已創(chuàng)建 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

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
(轉(zhuǎn)載) Oracle多行記錄合并/連接/聚合字符串的幾種方法 - 狗賬人事^ ^ - I...
yangtingkun : Oracle中‘AA ‘和‘AA‘是否相等
Oracle之自定義函數(shù)
oracle多行變一行
Oracle 20c 新特性詳解:SQL Macro 宏 SCALAR / TABLE 模式帶來的敏捷和便利
Oracle內(nèi)置SQL函數(shù)-分類整理大全
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服