使用的代码
代码如下 | 复制代码 |
-- sample data collect函数(Oracle10g) sys_connect_by_path user-defined-function |
辅助用的my_tk包代码片段
代码如下 | 复制代码 |
create or replace type my_tk_str_tab_type is table of varchar2(100); --------------------------------------------------------------------- |
自定义聚合函数
------------------------------------------------------------------
代码如下 | 复制代码 |
-- user-defined-function STATIC FUNCTION ODCIAggregateInitialize(sctx IN OUT t_string_agg) MEMBER FUNCTION ODCIAggregateIterate(self IN OUT t_string_agg, MEMBER FUNCTION ODCIAggregateTerminate(self IN t_string_agg, MEMBER FUNCTION ODCIAggregateMerge(self IN OUT t_string_agg, MEMBER FUNCTION ODCIAggregateIterate(self IN OUT t_string_agg, MEMBER FUNCTION ODCIAggregateTerminate(self IN t_string_agg, MEMBER FUNCTION ODCIAggregateMerge(self IN OUT t_string_agg, |
最后给个参考表
在数据量10000的表上进行三种方法的测试,运行时间单位秒
数据量PCT | Collect | SYS_Connect | UDF |
1% | 0.017 | 0.018 | 0.017 |
10% | 0.026 | 0.050 | 0.029 |
50% | 0.057 | 2.45 | 0.065 |
100% | 0.090 | 5.00 | 1.06 |