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_ ...
随机推荐
- Mac 中安装 Apache Ant
1.下载Apache Ant:http://ant.apache.org/bindownload.cgi 2.解压apache-ant-1.9.6-bin.zip,把解压好的apache-ant-1. ...
- 【HDU 2167】 Pebbles
[题目链接] 点击打开链接 [算法] 状压DP 先搜出一行符合的情况,然后,f[i][j]表示第i行,状态为j,能够取得的最大值,DP即可 [代码] #include<bits/stdc++.h ...
- Code Project精彩系列(转)
Code Project精彩系列(转) Code Project精彩系列(转) Applications Crafting a C# forms Editor From scratch htt ...
- 《Perceptual Losses for Real-Time Style Transfer and Super-Resolution》论文笔记
参考 http://blog.csdn.net/u011534057/article/details/55052304 代码 https://github.com/yusuketomoto/chain ...
- HardFault_Handler 输出日志信息
之前文章说了原理,这里把最终实现的代码总结: IAR void hard_fault_handler_c (unsigned int * hardfault_args) { unsigned int ...
- Jquery选择器大全、属性操作、css操作、文档、事件等
一.简介 定义 jQuery创始人是美国John Resig,是优秀的Javascript框架: jQuery是一个轻量级.快速简洁的javaScript库. jQuery对象 jQuery产 ...
- SQL 初级教程学习(二)
1.SQL 语句从 "Websites" 表中选取头两条记录: SELECT * FROM Websites LIMIT 2; SELECT TOP 50 PERCENT * FR ...
- bzoj 1858: [Scoi2010]序列操作 || 洛谷 P2572
记一下:线段树占空间是$2^{ceil(log2(n))+1}$ 这个就是一个线段树区间操作题,各种标记的设置.转移都很明确,只要熟悉这类题应该说是没有什么难度的. 由于对某区间set之后该区间原先待 ...
- magento getMessage 不显示或者显示html标签解决方案
在模板页面不显示getMessage的解决方案是,在对应的控制器里加上如下代码: $this->_initLayoutMessages('customer/session'); 如果加入后出现如 ...
- Android 插件技术:动态加载dex技术初探
1.Android动态加载dex技术初探 http://blog.csdn.net/u013478336/article/details/50734108 Android使用Dalvik虚拟机加载可执 ...