最近oracle开发中遇到的一些问题及解决办法(一)待续
2008-01-10 17:39
656 查看
最近开发中遇到了很多问题,现在总结下来:
1.查询汇总是发现的一个问题:
select distinct(narrivmny) from fact_receivable //有值
select distinct(ninmny) from fact_receivable //有值
select sum(a.ninmny-a.narrivmny) from fact_receivable a 空
到底什么原因呢,一切都是NULL惹的祸!
处理办法:select sum(NVL(a.ninmny,0)-NVL(a.narrivmny,0)) from fact_receivable a
测试:
select nvl(3,0)-nvl( null,0) from dual
2.关于取两个日期间隔天数计算问题.floor(mixdate-to_date(a.djrq,'yyyy-mm-dd')):注意返回的是NUMBER类型,因此数据库
表中字段要设计成NUMBER类型.
关于计算今天是今年第几周:select get_week(to_char(sysdate,'yyyy-mm-dd')) from dual;
3.关于循环插入的一个存储过程:create or replace procedure receivablezl
as
mixdate date;
begin
EXECUTE IMMEDIATE 'truncate table xgck.fact_receivablezl';
mixdate:=sysdate-60;
loop
insert
into
fact_receivablezl(
pk_corp,custname,ninmny,date_desc,nninmny,days,ardate)
select * from (select a.pk_corp,d.custname,sum(a.ninmny),a.djrq,sum(a.nintaxmny-a.narrivmny),floor(mixdate-to_date(a.djrq,'yyyy-mm-dd')),to_char(mixdate,'YYYY-MM-DD')
from fact_receivable a,dim_bd_cubasdoc d,dim_bd_cumandoc e
where
a.pk_cumandoc = e.pk_cumandoc
and
e.pk_cubasdoc = d.pk_cubasdoc
and
a.djrq<to_char(mixdate,'YYYY-MM-DD')
group by a.pk_corp,d.custname,a.djrq,floor(mixdate-to_date(a.djrq,'yyyy-mm-dd'))
)
;
commit;
mixdate:= mixdate+1;
exit when to_char(mixdate,'YYYY-MM-DD')=to_char(sysdate,'YYYY-MM-DD');
end loop;
delete from fact_receivablezl where ninmny=0;
end;
1.查询汇总是发现的一个问题:
select distinct(narrivmny) from fact_receivable //有值
select distinct(ninmny) from fact_receivable //有值
select sum(a.ninmny-a.narrivmny) from fact_receivable a 空
到底什么原因呢,一切都是NULL惹的祸!
处理办法:select sum(NVL(a.ninmny,0)-NVL(a.narrivmny,0)) from fact_receivable a
测试:
select nvl(3,0)-nvl( null,0) from dual
2.关于取两个日期间隔天数计算问题.floor(mixdate-to_date(a.djrq,'yyyy-mm-dd')):注意返回的是NUMBER类型,因此数据库
表中字段要设计成NUMBER类型.
关于计算今天是今年第几周:select get_week(to_char(sysdate,'yyyy-mm-dd')) from dual;
3.关于循环插入的一个存储过程:create or replace procedure receivablezl
as
mixdate date;
begin
EXECUTE IMMEDIATE 'truncate table xgck.fact_receivablezl';
mixdate:=sysdate-60;
loop
insert
into
fact_receivablezl(
pk_corp,custname,ninmny,date_desc,nninmny,days,ardate)
select * from (select a.pk_corp,d.custname,sum(a.ninmny),a.djrq,sum(a.nintaxmny-a.narrivmny),floor(mixdate-to_date(a.djrq,'yyyy-mm-dd')),to_char(mixdate,'YYYY-MM-DD')
from fact_receivable a,dim_bd_cubasdoc d,dim_bd_cumandoc e
where
a.pk_cumandoc = e.pk_cumandoc
and
e.pk_cubasdoc = d.pk_cubasdoc
and
a.djrq<to_char(mixdate,'YYYY-MM-DD')
group by a.pk_corp,d.custname,a.djrq,floor(mixdate-to_date(a.djrq,'yyyy-mm-dd'))
)
;
commit;
mixdate:= mixdate+1;
exit when to_char(mixdate,'YYYY-MM-DD')=to_char(sysdate,'YYYY-MM-DD');
end loop;
delete from fact_receivablezl where ninmny=0;
end;
相关文章推荐
- 最近oracle开发中遇到的一些问题及解决办法(三)待续
- 最近oracle开发中遇到的一些问题及解决办法(五)待续
- 最近oracle开发中遇到的一些问题及解决办法(二)待续
- 最近oracle开发中遇到的一些问题及解决办法(四):调试存储过程--待续
- 最近在ArcGIS Engine开发中关于调用gp工具过程出现COM 组件的调用返回了错误 HRESULT E_FAIL 错误的解决方法 和 学习oracle中遇到的一些问题总结
- 最近使用Qt遇到的一些小问题解决办法总结
- ios移动开发遇到的一些小问题的解决办法
- 最近做的一个linux下的聊天系统,遇到的一些问题及解决办法
- 最近一阵子写C#的项目,遇到的一些问题以及解决的办法,跟大家分享一下```
- java+hibernate开发时遇到的一些问题及解决办法
- 最近在用mvc3开发时遇到的一些小问题与解决方法....
- BAYKEE app开发中遇到的一些问题和解决办法
- [Java] 最近导入外部项目遇到的一些问题的解决办法的分享
- 最近做android开发遇到的一些错误和解决办法
- 开发手机游戏遇到的一些问题及解决办法
- 关于android开发遇到的一些问题的解决办法---间断的更新
- 项目开发过程中遇到的一些问题和解决办法(逐渐添加)
- Oracle遇到的一些问题及其解决办法
- 基于.net compact framework 2.0,C#开发windows mobile 5.0程序遇到的一些问题及解决办法
- 最近在用mvc3开发时遇到的一些小问题与解决方法....