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_ ...
随机推荐
- 并不对劲的bzoj3277
陈年老坑 题意大概是有n个字符串,要求出每一个字符串的所有子串(不包括空串)在所有字符串(包括自身)中出现次数不少于k的有多少个.n,k,字符串总长<=100000. 如果只有一个串的话,非常好 ...
- 分拆数&&HDU4651
1,有两种DP,复杂度都是O(N^2),但是浪费的侧重点不同,所以根据侧重点分块DP,复杂度可以降到O(N^1.5). 2,母函数+五边形blabla... 占位. 其实就是母函数拆开后,快速知道哪些 ...
- Windows下手动安装redis服务
1.Redis本身不支持windows,但是有另外的团队在维护着一个windows下的版本 2.下载地址: https://github.com/MSOpenTech/redis 2.8的版本在源 ...
- python-----贴图 和 报错:OSError: image file is truncated (8 bytes not processed)的处理
将一张图片贴到另一张图片上,代码如下: from PIL import Image import os from PIL import ImageFile ImageFile.LOAD_TRUNCAT ...
- Python.h:No such file or directory
出现No such file or directory的错误,有两种情况,一种是真的没有Python.h这个文件,一种是Python的版本不对, 可以进入/usr/include/文件夹下的Pytho ...
- Centos6可以ping通但浏览器不能上网(解决)
遇到这种情况,只需要修改一下DNS Server即可,如下图. 这样再试试,应该可以了吧-
- JAVA中抽象类不可以实例化,却可以创建数组
这是我定义的一个抽象类: 如果你试图创建一个对象,当然是不行的,抽象类不能用new运算符创建对象. 这是错误提示,还记得instantiate这个单词吗?在我的这篇随笔第二篇(那些JAVA程序BUG中 ...
- [Usaco2008 Dec]Hay For Sale 购买干草
Description 约翰遭受了重大的损失:蟑螂吃掉了他所有的干草,留下一群饥饿的牛.他乘着容量为C(1≤C≤50000)个单位的马车,去顿因家买一些干草. 顿因有H(1≤H≤5000)包干草,每一 ...
- 暑期训练狂刷系列——poj 3468 A Simple Problem with Integers (线段树+区间更新)
题目连接: http://poj.org/problem?id=3468 题目大意: 给出n个数,有两种操作: 1:"C a b c",[a,b]中的每一个数都加上c. 2:&qu ...
- [ZPG TEST 110] 多边形个数【DP】
1. 多边形个数 (polygons.pas/c/cpp) [问题描述] 给定N线段,编号1到n.并给出这些线段的长度,用这些线段组成一个K边形,并且每个线段做多使用一次.若使用了一条不同编号的线段, ...