铁血武工队传奇34一40:自己写的存储过程

来源:百度文库 编辑:九乡新闻网 时间:2024/07/07 08:39:53
create or replace procedure nrmis_data_count_p is
  v_zltablename varchar(255);
  v_qjtablename varchar(255);
  v_name        varchar2(255);
  tCount        varchar2(255);
  addCount      varchar2(255);
  updateCount   varchar2(255);
  deletedCount  varchar2(255);
  strSql        varchar(255);
begin
  declare
   
    cursor cur_obj is
      select t.name, t.zltablename, t.qjtablename from RES_DATA_OBJECT t where t.iscount='0';
  
 
    cur_objrecode cur_obj%rowtype;
  begin
    open cur_obj;
    loop
      fetch cur_obj
        into cur_objrecode;
      exit when cur_obj%notfound;
   
      v_name := cur_objrecode.name;
   
      v_zltablename := cur_objrecode.zltablename;
      v_qjtablename := cur_objrecode.qjtablename;
      strSql        := 'select count(*) from ' || v_zltablename ||
                       ' c where c.bgbj=''' || 'I' || '''';
      DBMS_OUTPUT.put_line(strSql);
      execute immediate strSql
        into addCount;
   
      strSql := 'select count(*) from ' || v_zltablename ||
                ' c where c.bgbj=''' || 'U' || '''';
    DBMS_OUTPUT.put_line(strSql);
      execute immediate strSql
        into updateCount;
   
      strSql := 'select count(*) from ' || v_zltablename ||
                ' c where c.bgbj=''' || 'D' || '''';
    DBMS_OUTPUT.put_line(strSql);
      execute immediate strSql
        into deletedCount;
   
      strSql := 'select count(*) from ' || v_qjtablename;
    DBMS_OUTPUT.put_line(strSql);
      execute immediate strSql
        into tCount;
   
      insert into nrmis_data_count
        (ID, ADDCOUNT, UPDATECOUNT, DELETECOUNT, TODAYCOUNT, NAME)
      select
         seq_bsf.nextval,t.* from (select
         addCount,
         updateCount,
         deletedCount,
         tCount,
         v_name from dual)t;
    end loop;
    close cur_obj;
  end;
end nrmis_data_count_p;