- 打开游标,根据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中使用“存储过程”(一)
|