oracle游标遍历
--创建存储过程
CREATE OR REPLACE PROCEDURE xxxxxxxxxxx_p (--参数IN表示输入参数,OUT表示输入参数,类型可以使用任意Oracle中的合法类型。
is_ym IN CHAR)
AS
--定义变量
vs_msg VARCHAR2 (4000); --错误信息变量
vs_ym_beg CHAR (6); --起始月份
vs_ym_end CHAR (6); --终止月份
vs_ym_sn_beg CHAR (6); --同期起始月份
vs_ym_sn_end CHAR (6); --同期终止月份 --定义游标(简单的说就是一个可以遍历的结果集)
CURSOR cur_1
IS
SELECT area_code,CMCODE,SUM (rmb_amt) / 10000 rmb_amt_sn,SUM (usd_amt) / 10000 usd_amt_sn
FROM BGD_AREA_CM_M_BASE_T
WHERE ym >= vs_ym_sn_beg AND ym <= vs_ym_sn_end
GROUP BY area_code, CMCODE;
BEGIN
--用输入参数给变量赋初值,用到了Oralce的SUBSTR TO_CHAR ADD_MONTHS TO_DATE 等很常用的函数。
vs_ym_beg := SUBSTR (is_ym, 1, 6);
vs_ym_end := SUBSTR (is_ym, 7, 6);
vs_ym_sn_beg :=
TO_CHAR (ADD_MONTHS (TO_DATE (vs_ym_beg, 'yyyymm'), -12), 'yyyymm');
vs_ym_sn_end :=
TO_CHAR (ADD_MONTHS (TO_DATE (vs_ym_end, 'yyyymm'), -12), 'yyyymm'); --先删除表中特定条件的数据。
DELETE FROM xxxxxxxxxxx_T
WHERE ym = is_ym; --然后用内置的DBMS_OUTPUT对象的put_line方法打印出影响的记录行数,其中用到一个系统变量SQL%rowcount
DBMS_OUTPUT.put_line ('del上月记录=' || SQL%ROWCOUNT || '条'); INSERT INTO xxxxxxxxxxx_T (area_code,ym,rmb_amt,usd_amt)
SELECT area_code,is_ym,CMCODE,SUM (rmb_amt) / 10000,SUM (usd_amt) / 10000
FROM BGD_AREA_CM_M_BASE_T
WHERE ym >= vs_ym_beg AND ym <= vs_ym_end
GROUP BY area_code, CMCODE; DBMS_OUTPUT.put_line ('ins当月记录=' || SQL%ROWCOUNT || '条'); --遍历游标处理后更新到表。遍历游标有几种方法,用for语句是其中比较直观的一种。
FOR rec IN cur_1
LOOP
UPDATE xxxxxxxxxxx_T
SET rmb_amt_sn = rec.rmb_amt_sn, usd_amt_sn = rec.usd_amt_sn
WHERE area_code = rec.area_code
AND CMCODE = rec.CMCODE
AND ym = is_ym;
END LOOP; COMMIT;
--错误处理部分。OTHERS表示除了声明外的任意错误。SQLERRM是系统内置变量保存了当前错误的详细信息。
EXCEPTION
WHEN OTHERS
THEN
vs_msg :='ERROR IN xxxxxxxxxxx_p('|| is_ym|| '):'|| SUBSTR (SQLERRM, 1, 500);
ROLLBACK; --把当前错误记录进日志表。
INSERT INTO LOG_INFO (proc_name, error_info, op_date)
VALUES ('xxxxxxxxxxx_p', vs_msg, SYSDATE); COMMIT;
RETURN;
END;
--http://wenwen.soso.com/z/q251328153.htm
--http://wenku.baidu.com/view/4171c179168884868762d66c.html
--http://database.ctocio.com.cn/tips/286/8265286.shtml
oracle游标遍历的更多相关文章
- Oracle游标动态赋值
1. oracle游标动态赋值的小例子 -- 实现1:动态给游标赋值 -- 实现2:游标用表的rowtype声明,但数据却只配置表一行的某些字段时,遍历游标时需fetch into到精确字段 CREA ...
- Oracle游标的使用示例
此文是使用Oracle游标的几种方式,for...in会自动打开游标,fetch...into需要手动打开游标,游标类似于一个只会往前移动的指针,每次指向数据集中的一行数据,通过游标可以打开数据集,也 ...
- [转载]oracle游标概念讲解
原文URL:http://www.2cto.com/database/201203/122387.html ORACLE游标概念讲解 什么是游标? ①从表中检索出结果集,从中每次指向一条记录进行交互 ...
- ORACLE游标概念讲解
1,什么是游标? ①从表中检索出结果集,从中每次指向一条记录进行交互的机制. ②关系数据库中的操作是在完整的行集合上执行的. 由 SELECT 语句返回的行集合包括满足该语句的 WHERE 子句所 ...
- Oracle 游标示例,带异常处理
Oracle游标示例一则,带异常处理. DECLARE CURSOR c_dl IS SELECT ID, NSRSBH, WSPZXH, ZXYY_DM, HZRQ, SWJG_DM, GXSJ F ...
- Oracle游标带参数
Oracle游标是可以带参数的,而SqlServer的游标就不可以了 create or replace procedure a as cursor b(c_id int)is select * fr ...
- mysql存储过程之游标遍历数据表
原文:mysql存储过程之游标遍历数据表 今天写一个mysql存储过程,根据自己的需求要遍历一个数据表,因为对存储过程用的不多,语法不甚熟悉,加之存储过程没有调试环境,花了不少时间才慢慢弄好,故留个痕 ...
- Oracle 游标使用(转)
这个文档几乎包含了oracle游标使用的方方面面,全部通过了测试 ; ; dbms_output.put_line(sql) loop dbms_output.put_line( ; ; ; r_te ...
- Oracle 游标使用全解(转)
转自:http://www.cnblogs.com/sc-xx/archive/2011/12/03/2275084.html 这个文档几乎包含了oracle游标使用的方方面面,全部通过了测试 -- ...
随机推荐
- springboot集成shiro实现权限缓存和记住我
到这节为止,我们已经实现了身份验证和权限验证.但是,如果我们登录之后多次访问http://localhost:8080/userInfo/userDel的话,会发现权限验证会每次都执行一次.这是有问题 ...
- jquery显示隐藏效果
通过 jQuery,您可以使用 hide() 和 show() 方法来隐藏和显示 HTML 元素toggle() 方法来切换 hide() 和 show() 方法. 1.hide()隐藏元素 $(se ...
- 如何在Android Studio中导入JNI生成的.so库
由于在原来的ADT的Eclipse环境中,用ndk_build工具生成了相应的各个.so库文件之后,eclipse工具就会自动把这些库导入到apk中.而Android Studio目前为止(0.86版 ...
- Setting 之dashboard 点击跳转流程
设置的主界面的可以通过修改xml中的dashboard_categaries.xml 文件实现,在DashboardSummary.java 文件中的rebuildUI()方法中将xml对应的实体类转 ...
- 《Ionic 2 实例开发》发布
Ionic 2系列教程集结成册,在百度阅读上架发布,名为<Ionic 2实例开发>(点击书名将打开地址:http://yuedu.baidu.com/ebook/ba1bca51e4189 ...
- 微软Coco Blockchain Framework:一键解决企业级区块链三大难题
近年来,异军突起的“区块链”受到全行业的广泛关注,众多企业级用户在积极拥抱新技术的过程中却面临三大难题:性能.隐私和组织管理.如果不能很好地解决这些“顽固分子”,区块链技术就相对局限,很难发挥出应有的 ...
- 如何变更站点 AD 域服务器IP地址
在 winserver 2012 单森林单域,多站点环境中,想把某一个站点AD 域服务器IP地址更改,要如何操作,才能保证客户端正常运行,不影响客户端的运行.有些朋友也经常提出类似问题. 想在不影响 ...
- 为了少点击几次,自己写了一个Chrome插件
缘由 chrome应用商店有三款二维码插件,自己一直使用的第一款.这三款插件有且只有一个功能就是生成当前页面的URL的二维码. 其实这个功能基本上满足了需要移动端开发在微信里打开页面进行调试的情况. ...
- GWT-2.5.1离线安装
GWT官方离线包下载地址 http://dl.google.com/eclipse/plugin/3.7/zips/gpe-e37-latest-updatesite.zip 以下是GWTDesign ...
- 两个有序数列,求中间值 Median of Two Sorted Arrays
原题: There are two sorted arrays nums1 and nums2 of size m and n respectively.Find the median of the ...