易截截图软件、单文件、免安装、纯绿色、仅160KB

一个Oracle自定义聚集函数的例子

前天有人提了需求,想对某个字段进行按位的或操作。本来建议查询出来之后在应用程序里面处理,但是数据量比较大,觉得还是返回一个分组计算之后的值比较合适。
两个问题,一个是按为或的操作,这个参考了别人的文档,用bitand函数实现。 原文如下:
http://blog.chinahr.com/blog/hewy0526/post/112968
然后就是自定义的聚集函数了。这个参考了官方文档的例子,就不列出原文出处了。
全部代码如下:
-- 1. Implement the type BitOrImpl to contain the ODCIAggregate routines:
create type BitOrImpl as object
(
  bitorval NUMBER, -- result.
  static function ODCIAggregateInitialize(sctx IN OUT BitOrImpl)
    return number,
  member function ODCIAggregateIterate(self IN OUT BitOrImpl,
    value IN number) return number,
  member function ODCIAggregateTerminate(self IN BitOrImpl,
    returnValue OUT number, flags IN number) return number,
  member function ODCIAggregateMerge(self IN OUT BitOrImpl,
    ctx2 IN BitOrImpl) return number
);
/
-- 2. mplement the type body for BitOrImpl:
create or replace type body BitOrImpl is
static function ODCIAggregateInitialize(sctx IN OUT BitOrImpl)
return number is
begin
  sctx := BitOrImpl(0);
  return ODCIConst.Success;
end;
member function ODCIAggregateIterate(self IN OUT BitOrImpl, value IN number) return number is
begin
  self.bitorval := (self.bitorval + value) - bitand(self.bitorval, value);
  return ODCIConst.Success;
end;
member function ODCIAggregateTerminate(self IN BitOrImpl,
    returnValue OUT number, flags IN number) return number is
begin
  returnValue := self.bitorval;
  return ODCIConst.Success;
end;
member function ODCIAggregateMerge(self IN OUT BitOrImpl, ctx2 IN BitOrImpl) return number is
begin
  self.bitorval := (self.bitorval + ctx2.bitorval) - bitand(self.bitorval, ctx2.bitorval);
  return ODCIConst.Success;
end;
end;
/
-- 3. Create the user-defi


相关文档:

Oracle job 管理

SVRMGR> select * from dba_jobs;
初始化相关参数job_queue_processes
alter system set job_queue_processes=39 scope=spfile;//最大值不能超过1000  ;job_queue_interval = 10  //调度作业刷新频率秒为单位
DBA_JOBS describes all jobs in the database.
USER_JOBS describes all jobs owned by the c ......

[转]Oracle,sql server的空值(null)判断


sql server
替换null:isnull(arg,value)
如:select isnull(price,0.0) from orders                             ,如果price为null的话,用0 ......

oracle sequence值重置回1

declare 
  n   number(10); 
  tsql   varchar2(100); 
  begin 
  select   test_seq.nextval   into   n   from   dual; 
  n:=-(n-1); 
  tsql:='alter   ......

Oracle 控制文件

一. Oracle 控制文件主要包含如下条目
DATABASE ENTRY
CHECKPOINT PROGRESS RECORDS
REDO THREAD RECORDS
LOG FILE RECORDS
DATA FILE RECORDS
TEMP FILE RECORDS
TABLESPACE RECORDS
LOG FILE HISTORY RECORDS
OFFLINE RANGE RECORDS
ARCHIVED LOG RECORDS
BACKUP SET RECORDS
BACKUP PIECE RECORD ......

oracle分区表总结

在ORACLE里如果遇到特别大的表,可以使用分区的表来改变其应用程序的性能。

1.1 分区表PARTITION table
在ORACLE里如果遇到特别大的表,可以使用分区的表来改变其应用程序的性能。
1.1.1 分区表的建立:
某公司的每年产生巨大的销售记录,DBA向公司建议每季度的数据放在一个分区内,以下示范的是该公司1999年的数据( ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号