Oracle数据库存储过程练习20181212
先创建一个测试的数据表
--测试表
CREATE TABLE TEST20181207
(
ID INTEGER PRIMARY KEY,
FUND NUMBER,--上日资金
BALANCE NUMBER,--本日资金
CDATE VARCHAR2(10)
);
添加测试数据:
--添加测试数据
INSERT INTO TEST20181207 VALUES(1,100,200,'2018-10-31');
INSERT INTO TEST20181207 VALUES(2,100,200,'2018-11-01');
INSERT INTO TEST20181207 VALUES(3,200,0,'2018-11-03');
INSERT INTO TEST20181207 VALUES(4,0,100,'2018-11-10');
INSERT INTO TEST20181207 VALUES(5,100,0,'2018-11-20');
INSERT INTO TEST20181207 VALUES(6,10,100,'2018-11-10');
INSERT INTO TEST20181207 VALUES(7,100,0,'2018-11-20');
COMMIT;
创建存储过程:
CREATE OR REPLACE PROCEDURE TESTSELECT20181207
(I_START_DATE VARCHAR2,
I_END_DATE VARCHAR2)
IS
T_ID1 INTEGER;
T_FUND1 NUMBER;
T_BALANCE1 NUMBER;
T_CDATE1 VARCHAR2(10);
T_ID2 INTEGER;
T_FUND2 NUMBER;
T_BALANCE2 NUMBER;
T_CDATE2 VARCHAR2(10);
CURSOR CURSOR1 IS
SELECT ID,FUND,BALANCE,CDATE FROM TEST20181207
WHERE CDATE BETWEEN I_START_DATE AND I_END_DATE;
CURSOR CURSOR2(T_CDATE VARCHAR2) IS
SELECT ID,FUND,BALANCE,CDATE FROM TEST20181207
WHERE CDATE = (
SELECT MIN(CDATE) FROM TEST20181207
WHERE CDATE > T_CDATE
)
AND CDATE BETWEEN I_START_DATE AND I_END_DATE;
BEGIN
OPEN CURSOR1;
LOOP
FETCH CURSOR1 INTO T_ID1,T_FUND1,T_BALANCE1,T_CDATE1;
EXIT WHEN CURSOR1%NOTFOUND;
OPEN CURSOR2(T_CDATE1);
LOOP
FETCH CURSOR2 INTO T_ID2,T_FUND2,T_BALANCE2,T_CDATE2;
EXIT WHEN CURSOR2%NOTFOUND;
IF T_FUND2 <> T_BALANCE1 THEN
DBMS_OUTPUT.PUT_LINE('编号1:'||T_ID1||',本日资金1:'||T_BALANCE1||',日期1:'||T_CDATE1);
DBMS_OUTPUT.PUT_LINE('编号2:'||T_ID2||',上日资金2:'||T_FUND2||',日期2:'||T_CDATE2);
END IF;
END LOOP;
CLOSE CURSOR2;
END LOOP;
CLOSE CURSOR1;
END TESTSELECT20181207;
/
最后一个/在同时执行创建多个存储过程是必须的,/代表一个存储过程代码的结尾(结束).
调用存储过程:
CALL TESTSELECT20181207('2018-10-31','2018-11-30');
运行结果:

好了,就这样了.
Oracle数据库存储过程练习20181212的更多相关文章
- oracle数据库存储过程中NO_DATA_FOUND不起作用解决
oracle数据库存储过程中NO_DATA_FOUND不起作用 1.首先创建一个表lengzijiantest,表中只有一个字段f_id ? 1 2 3 4 5 [cpp] CREATE TABLE ...
- oracle数据库存储过程中的select语句的位置
导读:在oracle数据库存储过程中如果用了select语句,要么使用"select into 变量"语句要么使用游标,oracle不支持单独的select语句. 先看下这个存储过 ...
- 编程开发之--Oracle数据库--存储过程在out参数中使用光标(3)
在本系列学习随笔中的第2节我们留下了2个问题,我们现在讨论在out参数中使用光标. 1.要在out参数中使用光标,我们需要申明一个包的结构,包的结构分为包头和包体,包头只负责申明,包体只负责实现.包头 ...
- 编程开发之--Oracle数据库--存储过程和存储函数(2)
上一小结我们简单介绍了存储过程和存储函数,对存储过程和存储函数有了一个基本的了解,接下来介绍在java程序中如何调用我们创建的存储过程和存储函数 1.在应用程序中调用我们的存储过程 创建一个简单的Ja ...
- 基于oracle数据库存储过程的创建及调用
1.PLSQL编程 1.1概念和目的 PL/SQL(Procedure Language/SQL) PLSQL是Oracle对sql语言的过程化扩展 指在SQL命令语言中增加了过程处理语句(如分支.循 ...
- 编程开发之--Oracle数据库--存储过程和存储函数(1)
1.存储过程和存储函数 描述:指存储在数据库中供所有用户程序调用的子程序叫做存储过程.存储函数 区别:存储函数可以通过return子句返回一个函数的值 (1)存储过程 语法:create [or re ...
- Oracle数据库—— 存储过程与函数的创建
一.涉及内容 1.掌握存储过程与函数的概念. 2.能够熟练创建和调用存储过程与函数. 二.具体操作 1.创建存储过程,根据职工编号删除scott.emp表中的相关记录. (1)以scott 用户连接数 ...
- oracle数据库存储过程中NO_DATA_FOUND不起作用?
1.首先创建一个表lengzijiantest,表中只有一个字段f_id CREATE TABLE LENGZIJIANTEST ( F_ID NUMBER NOT NULL ) 2.插入一条数据 i ...
- Oracle数据库---存储过程、存储函数
--创建存储过程CREATE OR REPLACE PROCEDURE first_procISBEGIN DBMS_OUTPUT.PUT_LINE('我是过程'); DBMS_OUTPUT.PUT_ ...
随机推荐
- 二:网络--GET请求和POST请求
一.GET请求和POST请求简单说明 GET - 从指定的服务器中获取数据 POST - 提交数据给指定的服务器处理 GET方法: 使用GET方法时,查询字符串(键值对)被附加在URL地址后面一起发送 ...
- I.MX6 各模块 clock 查询
/********************************************************************* * I.MX6 各模块 clock 查询 * 说明: * ...
- [HNOI 2007] 紧急疏散
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1189 [算法] 首先 , 答案具有单调性 , 不妨二分答案” 第mid秒是否可以完成 ...
- String模块ascii_letters和digits
Python3中String模块ascii_letters和digits方法,其中ascii_letters是生成所有字母,从a-z和A-Z,digits是生成所有数字0-9. 示例如下: Pytho ...
- hdu4417(离线操作 + 树状数组)
题意: 给定一个长度为n的数组,有m次的查询,每次查询[a,b]区间里比H小的数有多少个? 由于n和m的取值范围为0到10的5次方,所以直接回答会超时,所以考虑先读入所有的查询操作,然后依次回答比H小 ...
- 小程序-demo:小程序示例-page/component
ylbtech-小程序-demo:小程序示例-page/component 以下将展示小程序官方组件能力,组件样式仅供参考,开发者可根据自身需求自定义组件样式,具体属性参数详见小程序开发文档. 1. ...
- 2. Ext中关于Ext.QuickTips.init()的使用
转自:http://www.cnblogs.com/jianglan/archive/2011/08/26/2154120.html 在extJS的例子中,大部分都在程序第一行使用了如下语句:Ext. ...
- maven项目没有错,但是在项目头上有红叉的解决方法
转自:https://blog.csdn.net/myblog_dhy/article/details/41695107 我在使用maven的过程中,要导入某个maven项目,导入的过程中会弹出一个框 ...
- Gym 100548F Color (数论容斥原理+组合数)
题意:给定 m 种颜色,把 n 盆花排成一直线的花涂色.要求相邻花的颜色不相同,且使用的颜色恰好是k种.问一共有几种涂色方法. 析:首先是先从 m 种颜色中选出 k 种颜色,然后下面用的容斥原理,当时 ...
- CodeForces 730A Toda 2 (模拟)
题意:给定一个序列,现在你每次至多给5个人的权值减小1,最少2个人,最小是0,使得剩下的所有权值都相等且尽量大. 析:用multiset来模拟,每次取权值最大的三个或者两个,直到最后相等.我开始没有这 ...