游标-遍历-查询-1
2015-06-11 13:33
316 查看
declare --类型定义 strsql string(500); type prizeinfo is record( prizecode VARCHAR2(200), prizetypeid number, prizename VARCHAR2(200), description VARCHAR2(500), packageid number, campaignid number ); type prizecode is record( prizecode VARCHAR2(200), rowcounts number ); info prizeinfo; codeinfo prizecode; rows_data VARCHAR2(200); v_ErrorCode NUMBER; -- Variable to hold the error message code v_ErrorText VARCHAR2(200); -- Variable to hold the error message text cursor c_eventstate is Select CampaignId,phonenumber,PolicyNumber,packageid from mkt_eventstate a where synstate =0 and packagestate = 2 and errorcode = 6 and rownum<10000 ; --定义一个游标变量v_cinfo c_emp%ROWTYPE ,该类型为游标c_emp中的一行数据类型 c_row c_eventstate%rowtype; begin for c_row in c_eventstate loop begin -- strsql:='select a.prizecode,a.prizetypeid,b.prizename,b.description,c.packageid,c.campaignid from mkt_CampaignPrize a join mkt_prizeType b on a.prizetypeid=b.prizetypeid -- join mkt_UserPrizeInfo c on a.CampaignPrizeId=c.CampaignPrizeId and c.campaignid='||c_row.CampaignId||' and c.userid='||c_row.phonenumber||' and c.PolicyNumber='''||c_row.PolicyNumber||''' -- join mkt_packageprize e on e.packageid='||c_row.packageid||' and a.prizetypeid=e.prizetypeid and rownum=1 and b.PROVIDER=''生活服务商城''' ; -- execute immediate strsql into info ; -- dbms_output.put_line(info.prizecode||'-'||info.prizename||'-'||info.packageid||'-'||info.campaignid); strsql:='select a.prizecode, count(1) from mkt_CampaignPrize a join mkt_prizeType b on a.prizetypeid=b.prizetypeid join mkt_UserPrizeInfo c on a.CampaignPrizeId=c.CampaignPrizeId and c.campaignid='||c_row.CampaignId||' and c.userid='||c_row.phonenumber||' and c.PolicyNumber='''||c_row.PolicyNumber||''' join mkt_packageprize e on e.packageid='||c_row.packageid||' and a.prizetypeid=e.prizetypeid and b.PROVIDER=''生活服务商城'' group by a.prizecode, a.prizetypeid having count(1)>1' ; execute immediate strsql into codeinfo ; dbms_output.put_line(codeinfo.prizecode||'-'||codeinfo.rowcounts); -- dbms_output.put_line(c_row.CampaignId||'-'||c_row.phonenumber||'-'||c_row.PolicyNumber); -- RAISE_APPLICATION_ERROR(-20001,'数值不能为0'); EXCEPTION --捕捉异常 WHEN others THEN begin v_ErrorCode := SQLCODE; v_ErrorText := SUBSTR(SQLERRM, 1, 200); DBMS_OUTPUT.put_line('捕获了错误begin'); dbms_output.put_line(c_row.CampaignId||'-'||c_row.phonenumber||'-'||c_row.PolicyNumber||'-'||v_ErrorCode || '::'||v_ErrorText); DBMS_OUTPUT.put_line('捕获了错误end'); end; end; end loop; end;
相关文章推荐
- 注解cascade = CascadeType.PERSIST 与cascade = CascadeType.all
- Ewebeditor最新漏洞和漏洞指数
- 阿里云CentOS中vsftp安装、配置、卸载
- 异步处理Servlet接收到的请求
- 设置-安全-手机加密功能讲解
- find . -mtime +1 查找文件
- 获取时间戳的方法
- AE特效-与MAYA的结合、制作音乐舞蹈太极动作
- repo 命令 切换源码工程分支
- Mysql 拿指定经纬度与数据库多条经纬度进行距离计算
- 大球与小球
- Firebug: Net Panel 使用详解
- 24式太极拳:3D动画演示(图文)
- 利用jquery实现滚动图片
- Linux学习笔记(06-11)POSIX消息队列
- XML基础知识学习
- To_review_100_0---堆的整理
- 中国互联网的11种盈利模式
- 常用的OCI函数
- map/reduce