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游标使用的方方面面,全部通过了测试 -- ...
随机推荐
- I/O流操做总结(三)
说实话,其实我并不是很喜欢Java这门语言,尽管它很强大,有很多现成的API可以调用 但我总感觉它把简单的事情弄得太过复杂,甚至有时候会让人迷失 弄不清到底是为了写出东西,还是为了语言本身 我学习的第 ...
- Jsp动态生成表格
输入行列: <body> <form action="Train2ResultJsp.jsp"> row:<input type="text ...
- 一键部署LNMP堆栈Web应用基础架构
https://market.azure.cn/Vhd/Show?vhdId=9852&version=10884 产品详情 产品介绍LEMP/LNMP 是指一组通常一起使用来运行动态网站或者 ...
- 首次将项目从eclipse提交到服务器的SVN
1.在Eclipse项目中,点击需要提交到svn的项目,鼠标右键,如下图: 2.鼠标右键后,我们看到Team选项,在二级菜单中点击“Share Project”,这个时候弹出“Share Projec ...
- SPOJ SORTBIT Sorted bit squence (数位DP,入门)
题意: 给出一个范围[m,n],按照二进制表示中的1的个数从小到大排序,若1的个数相同,则按照十进制大小排序.求排序后的第k个数.注意:m*n>=0. 思路: 也是看论文的.一开始也能想到是这种 ...
- Windows UEFI 安装策略的一个细节
在计算机已连接任何带Windows Boot Manager的硬盘的时候,系统自己不会创建EFI分区,而是用之前的
- Html.Action Html.RenderAction Html.Partial Html.RenderPartial Url.Action Html.ActionLink 大括号和小括号区别
在查阅了一些资料后,结论如下: Action 是以mvchtmlstring的方式返回一个结果,RenderAction 无返回值,速度上action慢于RenderAction partial和Re ...
- 拨出网线后,网卡IP丢失
/etc/network/interfaces与NetworkManager 问题:在Centos7上把网线拨出后,发现网卡状态是down,并且网卡上的IP丢失 原因:此网卡被NetworkManag ...
- javaweb基础(14)_jsp的原理
一.什么是JSP? JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. JSP这门技术的最大的特点在于,写jsp就像在写h ...
- Java String Integer转换 练习:编程求字符串“100”和“150”按十进制数值做差后的结果以字符串形式输出。
package com.swift; public class String_To_Integer_Test { public static void main(String[] args) { /* ...