Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1996069
  • 博文数量: 1647
  • 博客积分: 80000
  • 博客等级: 元帅
  • 技术积分: 9980
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 15:15
文章分类

全部博文(1647)

文章存档

2011年(1)

2008年(1646)

我的朋友

分类:

2008-10-28 18:27:21


  根据客户需要,我们增加了一个统计表,用来汇总统计数据,统计数据的产生,需要根据一个基本表,动态执行sql语句.在过程中,动态生成sql语句然后执行,需要用到Execute Immediate命令.我想写一个通用的统计用过程,似乎不大好办,if语句的应用在所难免了.呵呵.
  
  特此存档.
  
  create or replace procedure P_INSERT_XT_TJ_MX(sDate in varchar2) is
  --author:李春雷
  --create time:2005.8.4
  --purpose:更新xt_tj_mx表
  sXh xt_tj.xh%type;             --主表序号
  sDwmc xt_tj.dwmc%type;
  sDw xt_tj.dw%type;
  sDwzd xt_tj.dwzd%type;
  sTable xt_tj.hzbmc%type;
  sSjzd xt_tj.sjzd%type;
  sSqlStr varchar2(300);
  iCount int;
  cursor curSort is
  select xh,dwmc,hzbmc,sjzd,dwzd,dw from xt_tj ;
  begin
  open curSort;
  loop
  fetch curSort into sXh,sDwmc,sTable,sSjzd,sDwzd,sDw;
  exit when curSort%notfound;
  sSqlStr := 'select count(*) from '|| sTable || ' where to_char('||sSjzd||','||'''YYYYMM'')=:sDate and '||sDwzd ||
  ' in (select dwxh from xt_dw connect by prior dwxh = dwfxh start with dwxh =:sDw)';
  Execute Immediate sSqlStr into iCount using sDate,sDw;
  delete from xt_tj_mx where fxh=sXh and sjz=sDate;
  insert into xt_tj_mx(xh,fxh,hzsm,sjz)values(SEQ_XT_TJ_MX.NEXTVAL,sXh,iCount,sDate);
  commit;
  end loop;
  end P_INSERT_XT_TJ_MX;
【责编:admin】

--------------------next---------------------

阅读(296) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~