PARALLEL_ENABLE AGGREGATE Oracle 사용자 정의 집합 함수 사용
Oracle
1 . oracle
a. static function ODCIAggregateInitialize(sctx IN OUTstring_agg_type )
return number
,
b. member function ODCIAggregateIterate(self IN OUT string_agg_type ,value IN varchar2)
return number
, , , , , , , .self
,
c. member function ODCIAggregateMerge (self IN string_agg_type,returnValue OUT varchar2,flags IN number)
return number
, , (parallel) .
d. member function OCDIAggregateTerminate(self IN string_agg_type,returnValue OUT varchar2,flags IN number)
, .
SQL Functions,Type, sqlplus start SQL ? : CREATE OR REPLACE FUNCTION strcat(input varchar2 )
RETURN varchar2
PARALLEL_ENABLE AGGREGATE USING strcat_type;
Functions SQL , sqlplus start , Functions , commit;
, SQL ,sqlplus 。
?Google , , Functions , !
CREATE OR REPLACE FUNCTION strcat(input varchar2 )
RETURN varchar2
PARALLEL_ENABLE AGGREGATE USING strcat_type;
/
Functions /, OK ~ sqlplus / Functions Type ! !
, , , 。 , ,
。
Oracle , , , 。
, 。
, permission , , 2 。 。
, 。
user_permission(user_id, permission, permission_type)
SQL> select * from user_permission;
USER_ID PERMISSION PERMISSIONTYPE
---------- ---------- --------------
1 31 1
1 7 1
1 63 1
, , , function userid ,
function userid , , Bitand bitand, 。 ,
, 。 , userid , , 。
。
, --Oracle
Oracle , sum() count() 。
Oracle built-in , sum,count,avg,min,max , Oracle , ,
,Oracle 。
Oracle ,
ODCIAggregateInitialize --
ODCIAggregateIterate --
ODCIAggregateMerge -- , ,
ODCIAggregateTerminate -- , .
, permission bitand
create or replace type permission_bitand as object ( v_permission_bitand number, static function ODCIAggregateInitialize(v_self in out permission_bitand ) return number, member function ODCIAggregateIterate(self in out permission_bitand, value in number) return number, member function ODCIAggregateMerge(self in out permission_bitand, v_next in permission_bitand) return number, member function ODCIAggregateTerminate(self in permission_bitand, return_value out number ,v_flags in number) return number )
, 。
create or replace type body permission_bitand is static function ODCIAggregateInitialize(v_self in out permission_bitand) return number is begin v_self := permission_bitand(null); return ODCICONST.Success; end; member function ODCIAggregateIterate(self in out permission_bitand , value in number) return number is begin /* bitand */ if self.v_permission_bitand is null then self.v_permission_bitand := value; else self.v_permission_bitand := bitand(self.v_permission_bitand, value); end if; return ODCICONST.Success; end; /* -- , , */ member function ODCIAggregateMerge(self in out permission_bitand, v_next in permission_bitand) return number is begin /* bitand with next permission_bitand*/ if self.v_permission_bitand is null then self.v_permission_bitand := nvl(v_next.v_permission_bitand, null); else if v_next.v_permission_bitand is not null then self.v_permission_bitand := bitand(self.v_permission_bitand, v_next.v_permission_bitand); end if; end if; return ODCICONST.Success; end; /*-- , */ member function ODCIAggregateTerminate(self in permission_bitand, return_value out number,v_flags in number) return number is begin return_value := self.v_permission_bitand; return ODCICONST.Success; end; end;
ODCIAggregateMerge http://www.kmxlg.com/http://www.yzhbox.com, 。
, , ,Oracle ,
,
create or replace function permission_bitand_sum(value number) return number parallel_enable aggregate using permission_bitand;
, , grant
SQL>create or replace public synonym permission_bitand_sum for permission_bitand_sum; SQL>grant execute on permission_bitand_sum to public; SQL>grant execute on permission_bitand to public;
SQL> select * from user_permission;
USER_ID PERMISSION PERMISSIONTYPE
---------- ---------- --------------
1 31 1
1 7 1
1 63 1
SQL> select permission_bitand_sum(permission) from user_permission; PERMISSION_BITAND_SUM(PERMISSION) --------------------------------- 7 SQL> insert into user_permission values(1, 0, 1); SQL> select permission_bitand_sum(permission) from user_permission; PERMISSION_BITAND_SUM(PERMISSION) --------------------------------- 0
SQL> update user_permission set permission=null where permission=0;
, null , 0, 0, null , , 7
SQL> select permission_bitand_sum(permission) from user_permission;
PERMISSION_BITAND_SUM(PERMISSION)
---------------------------------
7
, 。
, 10g wmsys.wm_concat(), , 9i
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 작업 은 Clob 또는 NClob 데이터 형식의 저장 프로 세 스 인 스 턴 스 를 포함 합 니 다.텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.