oracle中使用者自己建立與呼叫聚合函式

2021-08-31 18:06:15 字數 1994 閱讀 3180

在做專案的時候,遇到將多條記錄合併為一條記錄,然後將不同的字段合併為乙個字段顯示,並用逗號分開;本人使用後,解決了很多不便解決的問題,特整理如下,以供各位網友參考!

具體建立如下:首先開啟sql_plus:

建立函式使用的強制類:

--oracle9i聚合函式 (查詢時使用)

create type catstringimpl as object (

catstring varchar2(4000), -- 返回的字串

static function odciaggregateinitialize(sctx in out catstringimpl)

return number,

member function odciaggregateiterate(self in out catstringimpl,value in varchar2)

return number,

member function odciaggregateterminate(self in catstringimpl,returnvalue out varchar2, flags in number)

return number,

member function odciaggregatemerge(self in out catstringimpl,ctx2 in catstringimpl)

return number

);然後建立函式方法,就是函式功能:

create or replace type body catstringimpl as

static function odciaggregateinitialize(sctx in out catstringimpl) return number is

begin

sctx := catstringimpl('');

return odciconst.success;

end;

member function odciaggregateiterate(self in out catstringimpl, value in varchar2) return number is

begin

self.catstring := self.catstring || ',' || value;

return odciconst.success;

end;

member function odciaggregateterminate(self in catstringimpl, returnvalue out varchar2, flags in number) return number is

begin

returnvalue := self.catstring;

return odciconst.success;

end;

member function odciaggregatemerge(self in out catstringimpl , ctx2 in catstringimpl ) return number is

begin

self.catstring := self.catstring || ',' || ctx2.catstring;

return odciconst.success;

end;

end;

最後就是建立函式:

create function catstr( input varchar2 ) return varchar2 parallel_enable aggregate using catstringimpl;

這樣就建立好了目標函式,在查詢呼叫時如下:

select catstr( a) , b , c from tb group by b , c 就可以將字串按照code組合起來.

catstr為函式名稱,其中a是同個字段對應有不同的值,b,c就是同個字段並且相同的值.

有了這個方法,以後使用就方便多了!

Oracle中使用者管理簡介

建立語法 create user user name identified by password default tablespace temporary tablespace 修改使用者命令 alert user user name identified by new pwd 使用者鎖定與解鎖 ...

oracle中使用者連線相關

檢視使用者連線 斷掉某一連線 檢視連線ip oracle中檢視使用者連線 select username,sid,serial status from v session where username 1 select sid,ses.serial ses.username,pro.username...

oracle中使用者連線相關

檢視使用者連線 斷掉某一連線 檢視連線ip oracle中檢視使用者連線 select username,sid,serial status from v session where username 1 select sid,ses.serial ses.username,pro.username...