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_ ...
随机推荐
- Linux 下的静态(函数)库、动态(函数)库
0. 基本 在命名上,静态库的名字一般是 libxxx.a,动态库的名字一般是 libxxx.so,有时 libxxx.so.major.minor,xxx 是该 lib 的名字,major 是主版本 ...
- gdb core调试
原文链接 http://blog.163.com/lanka83/blog/static/32637615200801793020182/http://blog.csdn.net/taina2008/ ...
- ChartCtrl源码剖析之——CChartTitle类
CChartTitle类顾名思义,该类用来绘制波形控件的标题,它处于该控件的区域,如下图所示: CChartTitle类的头文件. #if !defined(AFX_CHARTTITLE_H__499 ...
- ArcGIS for JavaScript 3.9 本机IIS部署
arcgis 官方网站经常会打不开,天朝人民都懂得!因此将arcgis for javascript 配置到本机访问 首先esri中国下载最新版3.9的API: http://support.esri ...
- Eclipse如何打开Android工程(转载)
转自:http://www.cnblogs.com/kernel-style/p/3339102.html 一.Eclipse如何打开Android工程 1.你可以在file->new-> ...
- bzoj 2754: [SCOI2012]喵星球上的点名【AC自动机】
洛谷90,最后一个点死活卡不过去(也可能是我写的有问题? 比较暴力的做法,把询问带着标号建立AC自动机,用map存儿子. 然后用名字串在自动机上跑,以为是名或姓的子串就行所以把名和姓中间加个特殊字符拼 ...
- javascript---DOM大编程
编程练习 制作一个表格,显示班级的学生信息. 要求: 1. 鼠标移到不同行上时背景色改为色值为 #f2f2f2,移开鼠标时则恢复为原背景色 #fff 2. 点击添加按钮,能动态在最后添加一行 3. 点 ...
- [USACO 2011 Dec Gold] Cow Calisthenics【二分】
Problem 1: Cow Calisthenics [Michael Cohen, 2010] Farmer John continues his never-ending quest to ke ...
- composer 加快更新速度
一.使用代理 set http_proxy=http://127.0.0.1:8087 //Windows export http_proxy=http://127.0.0.1:8087 //linu ...
- WebSphere中配置的数据源在Web应用中引用的写法
WebSphere中配置的数据源在Web应用中引用时名称一定要和数据源的JNDI名称保持一致,否则会出现无法找到数据源的错误. 引用WAS的数据源时只需要与JNDI名称保持一致即可. 引用Tomcat ...