网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.复杂应用环境监控ORACLE数据库性.
.Oracle 数据表分区的策略.
.ExactPapers Oracle 1Z0-024 200.
.oracle停写日志的写法.
.打破oracle数据库树立的种种神话.
.HP-UX rx2600 B.11.22 U ia64 安.
.Oracle + PHP:从原型到产品的最.
.安装Oracle 10g 的艰难之旅.
.ORACLE 8.1.7修改初始化配置.
.关于使用SHOW_SPACE().
.Oracle 10g新增表空间类型:大文.
.Oracle数据操作和控制语言问题详.
.Oracle数据库执行计划的一些基本.
.通过socket访问数据库.
.ORACLE在HP_UX下的系列问题处理(.
.Oracle数据库-PL/SQL整理(1).
.Oracle复合数据类型(2).
.ORACLE培训教程(2)-数据库的安全.
.触发器介绍.
.几个删除重复记录的SQL语句.

Oracle索引表的使用(Table Index)

发表日期:2008-2-9



  
create or replace procedure proc_XXX(        p_iBillMonth    in  number,        p_tab           in  number,                p_nStatus       out number,        p_szErrorMsg    out varchar2) is        type t_cur is ref cursor;        v_ser           t_cur;       v_iAccId        number(11);       v_iSubId        number(10);       v_strDetail     varchar2(4000);        v_noDetail      varchar2(4000);        v_NewDetail     varchar2(4000);                   v_strSql        varchar2(4000);         v_BeginDate     varchar2(14);        v_EndDate       varchar2(14);        v_RowId         rowid;        v_iLen          number(2);        v_AccCode       varchar2(7);        v_strFee        varchar2(9);        v_strCount      varchar2(7);        v_strUnit       varchar2(12);        v_NoWnerCode    number;        v_SumId         number;        v_iTemp         number;        TYPE detail_param IS RECORD         (          acc_code         number(7),          fee              number(9),          time             number(1),    
      cout             number(7),          unit             number(12)        );        TYPE detail_param_list IS TABLE OF detail_param INDEX BY BINARY_INTEGER;        v_noowner_detail_param_list detail_param_list;        v_owner_detail_param_list   detail_param_list;begin        v_strSql:=' select acc_id,sub_id,to_char(begin_date,''yyyymmddhh24miss''),'             ' to_char(end_date,''yyyymmddhh24miss''),detail_data,rowid from sum_noowner_'p_iBillMonth                 ' where mod(acc_id,10)='p_tab;        open v_ser for v_strSql;        loop         <<nextsub>>         fetch v_ser into v_iAccId,v_iSubId,v_BeginDate,v_EndDate,v_noDetail,v_RowId;         exit when v_ser%notfound;                for i in 0..length(v_noDetail)/36-1 loop          v_noowner_detail_param_list(i+1).acc_code:=substr(v_noDetail,i*36+1,7);            v_noowner_detail_param_list(i+1).fee:=substr(v_noDetail,i*36+8,9);            v_noowner_detail_param_list(i+1).time:=substr(v_noDetail,i*36+17,1);            v_noowner_detail_param_list(i+1).cout:=substr(v_noDetail,i*36+18,7);             v_noowner_detail_param_list(i+1).unit:=substr(v_noDetail,i*36+25,12);               end loop;         for i in 0..length(v_strDetail)/36-1 loop          v_owner_detail_param_list(i+1).acc_code:=substr(v_strDetail,i*36+1,7);            v_owner_detail_param_list(i+1).fee:=substr(v_strDetail,i*36+8,9);            v_owner_detail_param_list(i+1).time:=substr(v_strDetail,i*36+17,1);            v_owner_detail_param_list(i+1).cout:=substr(v_strDetail,i*36+18,7);         
    v_owner_detail_param_list(i+1).unit:=substr(v_strDetail,i*36+25,12);        end loop;                                      for i in v_owner_detail_param_list.first..v_owner_detail_param_list.last loop               if v_owner_detail_param_list.EXISTS(i) THEN                 if v_noowner_detail_param_list.COUNT>0 then                  for j in v_noowner_detail_param_list.first..v_noowner_detail_param_list.last loop                          if v_noowner_detail_param_list.EXISTS(j) THEN                         if v_noowner_detail_param_list(j).acc_code=v_owner_detail_param_list(i).acc_code then                            v_owner_detail_param_list(i).fee:=                              v_owner_detail_param_list(i).fee+v_noowner_detail_param_list(j).fee;                            v_owner_detail_param_list(i).time:=                              v_owner_detail_param_list(i).time+v_noowner_detail_param_list(j).time;                            v_owner_detail_param_list(i).cout:=                              v_owner_detail_param_list(i).cout+v_noowner_detail_param_list(j).cout;                            v_owner_detail_param_list(i).unit:=                              v_owner_detail_param_list(i).unit+v_noowner_detail_param_list(j).unit;
                                               v_noowner_detail_param_list.delete(j);                         end if;                          end if;                    end loop;                 end if;               end if;          end loop;                 if v_noowner_detail_param_list.COUNT>0 then              for k in v_noowner_detail_param_list.first..v_noowner_detail_param_list.last loop                                  if v_noowner_detail_param_list.EXISTS(k) THEN                      v_owner_detail_param_list(v_owner_detail_param_list.COUNT + 1).acc_code:=                       v_noowner_detail_param_list(k).acc_code;                     v_owner_detail_param_list(v_owner_detail_param_list.COUNT + 1).fee:=                       v_noowner_detail_param_list(k).fee;                     v_owner_detail_param_list(v_owner_detail_param_list.COUNT + 1).time:=                       v_noowner_detail_param_list(k).time;                     v_owner_detail_param_list(v_owner_detail_param_list.COUNT + 1).cout:=                       v_noowner_detail_param_list(k).cout;      
               v_owner_detail_param_list(v_owner_detail_param_list.COUNT + 1).unit:=                       v_noowner_detail_param_list(k).unit;                  end if;              end loop;         end if;                     for i in v_owner_detail_param_list.first..v_owner_detail_param_list.last loop                                 if v_owner_detail_param_list.EXISTS(i) THEN                v_AccCode:=v_owner_detail_param_list(i).acc_code;             v_iLen:=length(v_AccCode);               while 7-v_iLen>0 loop             v_AccCode:=' 'v_AccCode;             v_iLen:=length(v_AccCode);            end loop;                                      v_strFee:=v_owner_detail_param_list(i).fee;             v_iLen:=length(v_strFee);               while 9-v_iLen>0 loop             v_strFee:=' 'v_strFee ;             v_iLen:=length(v_strFee);            end loop;                  v_strCount:=v_owner_detail_param_list(i).cout;             v_iLen:=length(v_strCount);            while 7-v_iLen>0 loop              v_strCount:=' 'v_strCount ;             v_iLen:=length(v_strCount);            end loop; 
                             v_strUnit:=v_owner_detail_param_list(i).unit;             v_iLen:=length(v_strUnit);            while 12-v_iLen>0 loop             v_strUnit:=' 'v_strUnit ;             v_iLen:=length(v_strUnit);            end loop;                                 v_NewDetail:=v_NewDetailv_AccCodev_strFee                          v_owner_detail_param_list(i).timev_strCountv_strUnit;                               end if;         end loop;             v_owner_detail_param_list.delete;                    v_NewDetail:='';        end loop;        close v_ser;         p_nStatus:=0;       p_szErrorMsg:='SUCceed to finish proc_no2ower.';       return;exception when others then  p_nStatus:=-1;    p_szErrormsg:='encounter a exception,sqlcode:'sqlcode                ',sqlerrm:'sqlerrm'v_sql:'v_strSql;  return;end proc_XXX;
上一篇:ORACLE问题,每天10问(二) 人气:545
下一篇:ORACLE问题,每天10问(四) 人气:618
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐