• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 數據庫基礎:用一個實例講解Oracle的自定義聚集函數

    發表于:2008-05-13來源:作者:點擊數: 標簽:數據庫oracleOracleORACLE定義
    Oracle 數據庫 的定制功能十分強大。Oracle不但允許用戶定制自己的函數,還可以定制自己的聚集函數和分析函數。 本文將著重介紹使用自定義聚集函數建立一個字符串“sum”的示例: SQL CREATE OR REPLACE TYPE T_LINK AS OBJECT ( 2 STR VARCHAR2(30000), 3 S
    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

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>