oracle聚集函式排序
對於按照自定義聚集函式連線起來的字串中的資料不能自動按照一定的規則進行組合,解決辦法是:在型別體中對資料進行排序處理。
下邊是修改後的程式碼
CREATE OR REPLACE TYPE VcArrayType IS TABLE OF VARCHAR2(4000);
/
CREATE OR REPLACE TYPE STR_CONN_TYPE AS OBJECT
(
--vStr VARCHAR2(4000),
vStr VcArrayType,
STATIC FUNCTION
ODCIAggregateInitialize(sctx IN OUT STR_CONN_TYPE )
RETURN NUMBER,
MEMBER FUNCTION
ODCIAggregateIterate(SELF IN OUT STR_CONN_TYPE ,
VALUE IN NUMBER )
RETURN NUMBER,
MEMBER FUNCTION
ODCIAggregateMerge(SELF IN OUT STR_CONN_TYPE,
ctx2 IN STR_CONN_TYPE)
RETURN NUMBER,
MEMBER FUNCTION
ODCIAggregateTerminate(SELF IN STR_CONN_TYPE,
returnValue OUT VARCHAR2,
flags IN NUMBER)
RETURN NUMBER
);
/
CREATE OR REPLACE TYPE BODY STR_CONN_TYPE
IS
STATIC FUNCTION ODCIAggregateInitialize(sctx IN OUT STR_CONN_TYPE)
RETURN NUMBER
IS
BEGIN
--sctx := STR_CONN_TYPE(NULL);
sctx := STR_CONN_TYPE(VcArrayType());
RETURN ODCIConst.Success;
END;
MEMBER FUNCTION ODCIAggregateIterate(SELF IN OUT STR_CONN_TYPE,
VALUE IN NUMBER )
RETURN NUMBER
IS
BEGIN
--SELF.vStr := SELF.vStr || ';' || VALUE;
vStr.EXTEND;
vStr(vStr.COUNT) := VALUE;
RETURN ODCIConst.Success;
END;
MEMBER FUNCTION ODCIAggregateMerge(SELF IN OUT STR_CONN_TYPE,
ctx2 IN STR_CONN_TYPE)
RETURN NUMBER
IS
BEGIN
RETURN ODCIConst.Success;
END;
MEMBER FUNCTION ODCIAggregateTerminate(SELF IN STR_CONN_TYPE,
returnValue OUT VARCHAR2,
flags IN NUMBER)
RETURN NUMBER
IS
tmp_vStr VARCHAR2(4000);
BEGIN
--returnValue := LTRIM(SELF.vStr,';');
FOR rec_Value IN (SELECT column_value FROM TABLE(vStr) ORDER BY to_number(column_value)) LOOP
tmp_vStr := tmp_vStr || ';' || rec_Value.column_value;
END LOOP;returnValue := LTRIM(tmp_vStr,';');
RETURN ODCIConst.Success;
END;
END;
/
CREATE OR REPLACE FUNCTION ConnStr(input VARCHAR2)
RETURN VARCHAR2
PARALLEL_ENABLE AGGREGATE USING STR_CONN_TYPE;
/[@more@]
下邊是修改後的程式碼
CREATE OR REPLACE TYPE VcArrayType IS TABLE OF VARCHAR2(4000);
/
CREATE OR REPLACE TYPE STR_CONN_TYPE AS OBJECT
(
--vStr VARCHAR2(4000),
vStr VcArrayType,
STATIC FUNCTION
ODCIAggregateInitialize(sctx IN OUT STR_CONN_TYPE )
RETURN NUMBER,
MEMBER FUNCTION
ODCIAggregateIterate(SELF IN OUT STR_CONN_TYPE ,
VALUE IN NUMBER )
RETURN NUMBER,
MEMBER FUNCTION
ODCIAggregateMerge(SELF IN OUT STR_CONN_TYPE,
ctx2 IN STR_CONN_TYPE)
RETURN NUMBER,
MEMBER FUNCTION
ODCIAggregateTerminate(SELF IN STR_CONN_TYPE,
returnValue OUT VARCHAR2,
flags IN NUMBER)
RETURN NUMBER
);
/
CREATE OR REPLACE TYPE BODY STR_CONN_TYPE
IS
STATIC FUNCTION ODCIAggregateInitialize(sctx IN OUT STR_CONN_TYPE)
RETURN NUMBER
IS
BEGIN
--sctx := STR_CONN_TYPE(NULL);
sctx := STR_CONN_TYPE(VcArrayType());
RETURN ODCIConst.Success;
END;
MEMBER FUNCTION ODCIAggregateIterate(SELF IN OUT STR_CONN_TYPE,
VALUE IN NUMBER )
RETURN NUMBER
IS
BEGIN
--SELF.vStr := SELF.vStr || ';' || VALUE;
vStr.EXTEND;
vStr(vStr.COUNT) := VALUE;
RETURN ODCIConst.Success;
END;
MEMBER FUNCTION ODCIAggregateMerge(SELF IN OUT STR_CONN_TYPE,
ctx2 IN STR_CONN_TYPE)
RETURN NUMBER
IS
BEGIN
RETURN ODCIConst.Success;
END;
MEMBER FUNCTION ODCIAggregateTerminate(SELF IN STR_CONN_TYPE,
returnValue OUT VARCHAR2,
flags IN NUMBER)
RETURN NUMBER
IS
tmp_vStr VARCHAR2(4000);
BEGIN
--returnValue := LTRIM(SELF.vStr,';');
FOR rec_Value IN (SELECT column_value FROM TABLE(vStr) ORDER BY to_number(column_value)) LOOP
tmp_vStr := tmp_vStr || ';' || rec_Value.column_value;
END LOOP;returnValue := LTRIM(tmp_vStr,';');
RETURN ODCIConst.Success;
END;
END;
/
CREATE OR REPLACE FUNCTION ConnStr(input VARCHAR2)
RETURN VARCHAR2
PARALLEL_ENABLE AGGREGATE USING STR_CONN_TYPE;
/[@more@]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18921899/viewspace-1017185/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle自定義聚集函式Oracle函式
- Oracle自定義聚集函式薦Oracle函式
- oracle 10g 新增:自定義聚集函式Oracle 10g函式
- 聊聊Oracle排序分析函式Oracle排序函式
- 轉:對字串的“sum”——在Oracle中自定義聚集函式的例子字串Oracle函式
- Oracle 11g 新聚集函式listagg實現列轉行Oracle函式
- 函式和字串排序函式字串排序
- 函式氣泡排序函式排序
- lambda匿名函式sorted排序函式filter過濾函式map對映函式函式排序Filter
- 陣列排序函式-php陣列函式(一)陣列排序函式PHP
- Python排序函式用法Python排序函式
- Sql Server系列:排序函式SQLServer排序函式
- 【函式】ORACLE函式大全函式Oracle
- oracle index 聚集因子OracleIndex
- Oracle聚合函式/分析函式Oracle函式
- 10g新增排序雜湊聚集表排序
- 【函式】Oracle EXTRACT()函式與to_char() 函式函式Oracle
- oracle 函式Oracle函式
- oracle or 函式Oracle函式
- Oracle函式Oracle函式
- 使用者自定義聚集函式--求平均值(avg)--myavg函式
- 【函式】Oracle函式系列(2)--數學函式及日期函式函式Oracle
- 【函式】oracle nvl2 函式函式Oracle
- 排序(對於 sort 函式的使用)排序函式
- 排序(並查集&&雜湊函式)排序並查集函式
- Oracle 函式大全(字串函式,數學函式,日期函式,邏輯運算函式,其他函式)Oracle函式字串
- Oracle分析函式與視窗函式Oracle函式
- oracle函式大全-字串處理函式Oracle函式字串
- Oracle分析函式七——分析函式案例Oracle函式
- 7 Oracle 函式Oracle函式
- Oracle 字串函式Oracle字串函式
- Oracle 字串函式Oracle字串函式
- ORACLE USERENV函式Oracle函式
- oracle dump 函式Oracle函式
- oracle Extract 函式Oracle函式
- Oracle字串函式Oracle字串函式
- ORACLE 常用 函式Oracle函式
- oracle函式索引Oracle函式索引