转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> ORACLE >> 正文
一个通过Oracle8i存储过程,返回记录集的程序包(存储过程)         ★★★★

一个通过Oracle8i存储过程,返回记录集的程序包(存储过程)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1859 更新时间:2009/4/22 22:03:54
- 打开游标,根据SQL语句获取1级代理商资料,然后根据1级代理商的资料获取2级代理的信息

  IF AreaCode!=''''0'''' And KeyWord='''' '''' Then
  
     strSQL:=''''Select A.AgtID,'''''''''''''''',A.Agtcredit,A.AgtProfit,
             B.AreaCode,B.AreaName,0 From Sms_Pay.FstAgtAccount A,Sms_Pay.AreaConfig B
             Where A.IsActive=1 And A.CityCode=B.CityCode And B.AreaCode ='''''''''''' || AreaCode ||'''''''''''''''';          
    
       
  ElsIf (Trim(AreaCode)!=''''0'''' And KeyWord!='''' '''') Then
     strSQL:=''''Select A.AgtID,'''''''''''''''',A.Agtcredit,A.AgtProfit,
             B.AreaCode,B.AreaName,0 From Sms_Pay.FstAgtAccount A,Sms_Pay.AreaConfig B
             Where A.IsActive=1 And A.CityCode=B.CityCode And B.AreaCode ='''''''''''' || AreaCode ||
             '''''''''''' And (B.AreaName Like ''''''''%'''' || Trim(KeyWord) || ''''%'''''''' Or  A.AgtID Like ''''''''%'''' || Trim(KeyWord) || ''''%'''''''')'''';
 
  ElsIf (Trim(AreaCode)=''''0'''' And KeyWord='''' '''') Then
   
     strSQL:=''''Select A.AgtID,'''''''''''''''',A.Agtcredit,A.AgtProfit,
             B.AreaCode,B.AreaName,0 From Sms_Pay.FstAgtAccount A,Sms_Pay.AreaConfig B
             Where A.IsActive=1 And A.CityCode=B.CityCode'''';               
 
  Else
     strSQL:=''''Select A.AgtID,'''''''''''''''',A.Agtcredit,A.AgtProfit,
             B.AreaCode,B.AreaName,0 From Sms_Pay.FstAgtAccount A,Sms_Pay.AreaConfig B
             Where A.IsActive=1 And A.CityCode=B.CityCode
             And (B.AreaName Like ''''''''%'''' || KeyWord || ''''%'''''''' Or  A.AgtID Like ''''''''%'''' || KeyWord || ''''%'''''''')'''';
   
  End If;
 
  
  Open FstCursor For strSQL;

  --检查临时表是否已经存在,如果不存在,则创建,否则插入数据 start
 Select Count(*) Into IsExists from all_tables Where Trim(Table_Name)=''''TEMPAGTBALANCE'''';

 IF IsExists=0 Then
    strSQL:=''''CREATE GLOBAL TEMPORARY TABLE  SMS_PAY.TEMPAgtBalance
      (FSTAGTID VARCHAR2(13) ,SECAgtID  VARCHAR2(13),ParentID  VARCHAR2(13),
      AgtBalance NUMBER(10,2),AgtProfit NUMBER(10,2),AreaCode VARCHAR2(10),
      AreaName VARCHAR2(30),AgtCount NUMBER(10)) on commit preserve rows'''';

     --把临时表的创建选项由on commit delete rows改为on commit preserve rows; 
     --否则在调用的时候,回出现ORA-08103: object no longer exists
     --DBMS_OUTPUT.PUT_LINE(strSQL);
     Execute Immediate strSQL;
  Else
     execute immediate ''''Truncate table Sms_pay.TEMPAgtBalance'''';
  End IF;
  --检查临时表是否已经存在,如果不存在,则创建,否则插入数据 end
      
 Loop

  Fetch FstCursor into pFSTAGTID,pSECAgtID, pAgtBalance,pAgtProfit,pAreaCode, pAreaName, pAgtCount ;
   
  Exit when FstCursor%NOTFOUND;

  --1:写1级代理商查询信息
  strSQL:=''''Insert into TEMPAgtBalance(FSTAGTID,SECAgtID, ParentID,AgtBalance,AgtProfit,AreaCode, AreaName, AgtCount)
           Values('''''''''''' || pFSTAGTID || '''''''''''',null,null,'''' || pAgtBalance || '''','''' || pAgtProfit || '''','''''''''''' || pAreaCode || '''''''''''',''''''''''''
           || pAreaName || '''''''''''','''' || pAgtCount || '''')'''';
   
    Execute Immediate strSQL;
   
  --2:写2级代理商查询信息
  strSQL:=''''Insert into TEMPAgtBalance Select null,AGTID,'''''''''''' || pFSTAGTID ||'''''''''''',AGTCREDIT,AGTPROFIT ,'''''''''''' || pAreaCode || '''''''''''','''''''''''' || pAreaName || '''''''''''',0 From SecAgtAccount Where Trim(BOSSAGTID)='''''''''''' || pFSTAGTID || '''''''''''''''';
  
  Execute Immediate strSQL;
           
    --3:更新1级代理的下级别代理商数量
    strSQL:=''''Select Count(*) From TEMPAgtBalance Where SECAgtID is not null And ParentID='''''''''''' || pFSTAGTID || '''''''''''''''';
    --DBMS_OUTPUT.PUT_LINE(strSQL);
    Execute Immediate strSQL  Into subAgtNumber;
    --Select Count(*) Into subAgtNumber From TEMPAgtBalance Where SECAgtID is not null And ParentID=pFSTAGTID;
   
    DBMS_OUTPUT.PUT_LINE(subAgtNumber);
       
    strSQL:=''''Update TEMPAgtBalance Set AgtCount='''' || subAgtNumber || '''' Where SECAgtID is null And FSTAGTID='''''''''''' || pFSTAGTID || '''''''''''''''';
    Execute Immediate strSQL;
   
    --DBMS_OUTPUT.PUT_LINE(strSQL);
    --Update TEMPAgtBalance Set AgtCount=subAgtNumber Where SECAgtID is null And FSTAGTID=pFSTAGTID;
      
 End loop;
 
     
 Close FstCursor;

 Open Re_CURSOR For ''''Select * From Sms_pay.TEMPAgtBalance'''';
 
 ret:=0;
 return;

 Exception

  when others then
  DBMS_OUTPUT.PUT_LINE(SQLERRM);
  ret:=999;  
  return;
  End GetAgtBalance;
 
 
 
End ;

 

上一页  [1] [2] 


[VB.NET程序]在VB.NET中使用MS Access存储过程 — 第二部份  [VB.NET程序]在VB.NET中使用MS Access存储过程 — 第一部份
[Web开发]vc++中,用ado执行sql server存储过程,并且取得返…  [其他]ListenSoftware解决方案“HowTo”系列2:存储过程
[SyBase]Sybase存储过程的建立和使用  [ORACLE]大家一起分享C#调用oracle存储过程
[ORACLE]ASP调用oracle存储过程  [ORACLE]jsp中调用Bean,然后在Bean中调用oracle存储过程。
[ORACLE]C#调用oracle存储过程 最简单的实例  [Access]在Access中使用“存储过程”(一)
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台