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

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

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1846 更新时间:2009/4/22 22:03:54

提示:在Oracle8i中,如果需要通过存储过程返回结果集, 需要使用游标!

CREATE OR REPLACE  PACKAGE BODY "SMS_PAY"."SMSMAINT"                                                                              
IS
 
 --功能描述:查询代理银行交易流水信息 writer: wang haibo 2004-08-24
 PROCEDURE GetAgtBankFlow(AreaCode in varchar2,KeyWord in varchar2,startTradeDate in varchar2,endTradeDate in varchar2,Re_CURSOR OUT T_CURSOR,ret out number)
   is
   
  IsExists number;
  
  strSQL VARCHAR2(2048);
  

 Begin

  --检查临时表是否已经存在,如果不存在,则创建,否则插入数据 start
 Select Count(*) Into IsExists from all_tables Where Table_Name=''''TEMPAGTBANKFLOW'''';
 
       
 IF IsExists=0 Then
 
    strSQL:=''''CREATE GLOBAL TEMPORARY TABLE  SMS_PAY.TEMPAgtBankFlow
      (AGTID VARCHAR2(13) ,BANK_GLIDE Number(12),TradeType VARCHAR2(20),Trade_Money Number(14,2),
      TRADEDATE VARCHAR2(10),TRADETIME VARCHAR2(8),BankNAME VARCHAR2(30),
      AreaCode Varchar2(30), AreaName VARCHAR2(30),State VARCHAR2(30),CheckFlag Number(1),
      StatusFlag Number(1),SuccFlag Number(1)) on commit preserve rows'''';

     --把临时表的创建选项由on commit delete rows改为on commit preserve rows; 
     --否则在调用的时候,回出现ORA-08103: object no longer exists
    
     Execute Immediate strSQL;
    
  Else
    
     Execute immediate ''''Truncate table Sms_pay.TEMPAGTBANKFLOW'''';
    
  End IF;
  --检查临时表是否已经存在,如果不存在,则创建,否则插入数据 end
   
  ---功能:把满足条件的一级代理商转帐信息导入数据库 Start
 
  /*strSQL:=''''Insert Into TEMPAgtBankFlow
           Select A.Agent_Mobile,A.Bank_Glide,
            Decode(A.OPTCode,''''''''100'''''''',''''''''交款交易'''''''',''''''''101'''''''',''''''''交款冲正'''''''',''''''''900'''''''',''''''''抹帐交易'''''''',''''''''类型不明'''''''') as TradeType,A.Trade_Money,
            TO_Char(To_Date(A.Trade_Date,''''''''YYYYMMDD''''''''),''''''''YYYY-MM-DD'''''''') as TradeDate,
            TO_Char(To_Date(A.Trade_Time,''''''''hh24miss''''''''),''''''''hh24:mi:ss'''''''') as TradeTime,B.BankName,C.AreaCode,C.AreaName,
            (Case When CheckFlag=-1 Then ''''''''/Images/state_rollback.gif'''''''' When SuccFlag=-1 Then ''''''''/Images/state_cancel.gif'''''''' When StatusFlag=-1 Then ''''''''/Images/state_unnormal.gif'''''''' Else ''''''''/Images/state_normal.gif'''''''' End) as State
           From Bank_Stream_Account A,BankInfoConfig B,AreaConfig C,FstAgtAccount D
            Where A.Bank_ID=B.BankCode And Trim(A.Agent_Mobile)=D.AgtID And C.CityCode=D.CityCode '''';
                   
  IF AreaCode!=''''0'''' Then   --条件1: 选择所有地区的信息    
     strSQL:=strSQL || '''' And Trim(C.AreaCode)='''''''''''' || AreaCode || '''''''''''' '''';
  End IF;  
    
  IF TradeDate!='''' '''' Then  --条件2: 选择所有地区的信息,选择所有交易日期的信息

     strSQL:=strSQL || '''' And TO_Char(To_Date(A.Trade_Date,''''''''YYYYMMDD''''''''),''''''''YYYY-MM-DD'''''''')='''''''''''' || TradeDate || '''''''''''' '''';       
          
  End If;
 
  IF KeyWord!='''' '''' Then  --条件3: 选择所有地区的信息,选择所有交易日期的信息,选择和查询关键字匹配的信息
    
     strSQL:=strSQL || ''''  And (D.AgtID Like''''''''%'''' || KeyWord || ''''%'''''''' Or TO_Char(A.BANK_GLIDE) Like ''''''''%'''' || KeyWord || ''''%'''''''' Or B.BankName Like ''''''''%'''' || KeyWord ||''''%'''''''') '''';
 
  End If; 
 
  Execute Immediate strSQL;    
 
  ---功能:把满足条件的一级代理商转帐信息导入数据库 End
  */
 
  ---功能:把满足条件的二级代理商转帐信息导入数据库 Start
   strSQL:=''''Insert Into TEMPAgtBankFlow
                 Select A.Agent_Mobile,A.Bank_Glide,
                   Decode(A.OPTCode,''''''''100'''''''',''''''''交款交易'''''''',''''''''101'''''''',''''''''交款冲正'''''''',''''''''900'''''''',''''''''抹帐交易'''''''',''''''''类型不明'''''''') as TradeType,A.Trade_Money,
                   TO_Char(To_Date(A.Trade_Date,''''''''YYYYMMDD''''''''),''''''''YYYY-MM-DD'''''''') as TradeDate,
                   TO_Char(To_Date(A.Trade_Time,''''''''hh24miss''''''''),''''''''hh24:mi:ss'''''''') as TradeTime,B.BankName,C.AreaCode,C.AreaName,
                   (Case When CheckFlag=-1 Then ''''''''/Images/state_rollback.gif'''''''' When SuccFlag=-1 Then ''''''''/Images/state_cancel.gif'''''''' When StatusFlag=-1 Then ''''''''/Images/state_unnormal.gif'''''''' Else ''''''''/Images/state_normal.gif'''''''' End) as State,
                   A.CheckFlag,A.StatusFlag,A.SuccFlag
                 From Bank_Stream_Account A,BankInfoConfig B,AreaConfig C,SecAgtAccount D,FstAgtAccount E
                   Where A.Bank_ID=B.BankCode And Trim(A.Agent_Mobile)=D.AgtID And D.BossAgtID=E.AgtID And C.CityCode=E.CityCode '''';
 
  IF AreaCode!=''''0'''' Then   --条件1: 选择所有地区的信息
    
     strSQL:=strSQL || '''' And Trim(C.AreaCode)='''''''''''' || AreaCode || '''''''''''' '''';
    
  End IF;  
    
  IF startTradeDate!='''' '''' Then  --条件2: 选择所有地区的信息,选择所有交易开始日期的信息

     strSQL:=strSQL || '''' And TO_Char(To_Date(A.Trade_Date,''''''''YYYYMMDD''''''''),''''''''YYYY-MM-DD'''''''')>='''''''''''' || startTradeDate || '''''''''''' '''';       
          
  End If;
 
  IF endTradeDate!='''' '''' Then  --条件2: 选择所有地区的信息,选择所有交易截止日期的信息

     strSQL:=strSQL || '''' And TO_Char(To_Date(A.Trade_Date,''''''''YYYYMMDD''''''''),''''''''YYYY-MM-DD'''''''')<='''''''''''' || endTradeDate || '''''''''''' '''';       
          
  End If;
 
  IF KeyWord!='''' '''' Then  --条件3: 选择所有地区的信息,选择所有交易日期的信息,选择和查询关键字匹配的信息
    
     strSQL:=strSQL || ''''  And (D.AgtID Like''''''''%'''' || KeyWord || ''''%'''''''' Or TO_Char(A.BANK_GLIDE) Like ''''''''%'''' || KeyWord || ''''%'''''''' Or B.BankName Like ''''''''%'''' || KeyWord ||''''%'''''''') '''';
 
  End If; 
                
      
  Execute Immediate strSQL;    
    ---功能:把满足条件的二级代理商转帐信息导入数据库 End

 Open Re_CURSOR For ''''Select * From Sms_pay.TEMPAgtBankFlow Order by AgtID'''';  --生成返回结果集的Curso
 
 ret:=0;
 return;

 Exception

  when others then
  DBMS_OUTPUT.PUT_LINE(SQLERRM);
  ret:=999;  
  return;
  End GetAgtBankFlow;
 
 
 
 
  
 --功能描述:查询代理商钱包余额信息 writer: wang haibo 2004-08-24
 PROCEDURE GetAgtBalance(AreaCode in varchar2,KeyWord in varchar2,Re_CURSOR OUT T_CURSOR,ret out number)
   is
  pFSTAGTID VARCHAR2(13);
  pSECAgtID  VARCHAR2(13);
  pAgtBalance NUMBER(10,2);
  pAgtProfit  NUMBER(10,2);
  pAreaCode VARCHAR2(10);
  pAreaName VARCHAR2(30);
  pAgtCount NUMBER(10);
 
  IsExists number;
  subAgtNumber number;

 type c_GetBalance is ref cursor;

  FstCursor c_GetBalance;

  strSQL VARCHAR2(1024);
 

 Begin

  -

[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……
    咸宁网络警察报警平台