顺序控制语句
1 goto建议不要使用

declare
i number:=;
begin
loop
dbms_output.put_line(i);
if i= then
goto end_loop;
end if;
i:=i+;
end loop;
<<end_loop>>
dbms_output.put_line('循环结束');
end;

2 null语句
null语句不会执行任何操作,提高程序的可读性

......
if ..then
...
else
null
end if;
......

分页过程
分页是任何一个网站都会使用到的技术

--建一个book表

create table book(
bookId number,
bookName varchar2(),
publishHouse varchar2()); --编写输入过程
--in:表示这是一个输入参数,默认为in
--out:表示一个输出参数
create or replace mypro(
spBookId in number, spbookName in varchar2, sppublishHouse in varchar2) is
begin
insert into book values(spBookId,spbookName,sppublishHouse);
end; --编写输入和输出过程
create or replace mypro1(
spno in number, spbookName out varchar2) is
begin
select ename into spbookName from emp where empno=spno;
end; 对应的java程序:
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection ct = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521","scott","m123");
CallableStatement cs = ct.prepareCall("{call mypro1(?,?)}");
cs.setInt(,);
cs.registerOutParameter(,oracle.jdbc.oracleTypes.VARCHAR);
cs.execute();
String name=cs.getString();
System.out.println(name);

--编写一个过程,输入部门编号,返回该部门的结果集
由于oracle存储过程没有返回值,它的返回值都是通过out参数代替,列表也不例外,但是由于是集合,所以不能用一般的参数,必须要用package了,所以要分两部门:

--.创建一个包,在该包中,定义类型test_cursor
create or replace package testpackage as
type test_cursor is ref cursor;
end testpackage; --.建立存储过程
create or replace procedure mypro2(spNo in number, p_cursor out testpackage.test_cursor) is
begin
open p_cursor for select * from emp where deptno=spNo;
end; --.如何在java中调用过程
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection ct = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521","scott","m123");
CallableStatement cs = ct.prepareCall("{call mypro2(?,?)}");
cs.setInt(,);
cs.registerOutParameter(,oracle.jdbc.oracleTypes.CURSOR);
cs.execute();
ResultSet rs=(ResultSet)cs.getObject();
while(re.next()){
System.out.println(rs.getInt()+" "+rs.getString());
}

分页案例

oracle的分页

select t1.* rownum rn from (select * from emp)  t1;

select t1.* rownum rn from (select * from emp)  t1 where rownum<=;

select * from (select t1.* rownum rn from (select * from emp)  t1 where rownum<=) where rn>=;

在分页时,可以把上面的sql语句当做一个模板使用

编写分页的过程
--开发一个包
create or replace package tespackage as
type test_cursor is ref cursor;
end tespackage --编写分页过程
create or replace procedure fenye
(tableName in varchar2,
pageSize in number,
pageNow in numuber,
myRows out number,
myPageCount out number,
p_cursor out tespackage.test_cursor --返回的记录集
) is
--定义sql语句,字符串
v_sql varchar2();
v_begin number:= (pageNow-)*pageSize+;
v_end number:= pageNow*pageSize;
begin
v_sql := 'select * from (select t1.*, rownum rn from (select * from '||tableName||' t1 where rownum<='||v_end||') where rn >='||v_begin'; --把游标和sql关联
open p_cursor for v_sql; --计算myrows和mypagecount
v_sql := 'select count(*) from '||tableName;
execute immediate v_sql into myrows; --执行sql语句并把返回的值赋给myrows; --计算myPageCount
if mod(myrows,pageSize) = then myPageCount := myrows/Pagesize ;
else myPageCount := myrows/Pagesize + ;
end if;
close p_cursor;
end;

oracle顺序控制语句goto、null和分页过程中输入输出存储、java程序的调用过程的更多相关文章

  1. oracle 11g在安装过程中出现监听程序未启动或数据库服务未注册到该监听程序

    15511477451 原文 oracle 11g在安装过程中出现监听程序未启动或数据库服务未注册到该监听程序? 环境:win7 64位系统.oracle11g数据库 问题描述:在win7 64位系统 ...

  2. [转帖]浅析java程序的执行过程

    浅析java程序的执行过程 转帖来源: https://www.cnblogs.com/wangjiming/p/10315983.html 之前学习过 这一块东西 但是感觉理解的不深刻. copy一 ...

  3. Java程序的执行过程

    Java程序的执行过程 编译器将 Java 源代码编译成字节码class文件 类加载到 JVM 里面后,执行引擎把字节码转为可执行代码 执行的过程,再把可执行代码转为机器码,由底层的操作系统完成执行

  4. Hadoop中客户端和服务器端的方法调用过程

    1.Java动态代理实例 Java 动态代理一个简单的demo:(用以对比Hadoop中的动态代理) Hello接口: public interface Hello { void sayHello(S ...

  5. 一个Java程序的执行过程(转)

    我们手工执行java程序是这样的:  1.在记事本中或者是UE的文本编辑器中,写好源程序:  2.使用javac命令把源程序编译成.class文件:    编译后的.class(类字节码)文件中会包含 ...

  6. Java程序执行的过程

    ava程序执行的过程: Step1:将字节码加入内存: Step2:对字节码进行合法性检查: Step3:jvm会为每个字节码文件都生成一个对象(class): Step4:执行静态代码块,初始化静态 ...

  7. tensorfolw配置过程中遇到的一些问题及其解决过程的记录(配置SqueezeDet: Unified, Small, Low Power Fully Convolutional Neural Networks for Real-Time Object Detection for Autonomous Driving)

    今天看到一篇关于检测的论文<SqueezeDet: Unified, Small, Low Power Fully Convolutional Neural Networks for Real- ...

  8. 浅析java程序的执行过程

    在研究任何一门语言时,无论是面向过程的c,c++(面向过程和面向对象),还是面向对象的.net,java等,弄清语言执行过程至关重要.  何为语言执行过程? 所谓语言执行过程,指对于任何一门语言,如j ...

  9. c++中六种构造函数的实现以及9中情况下,构造函数的调用过程

    六种构造函数的实现代码例如以下: #include<iostream> using namespace std; //c++中六种默认的构造函数 class Test { public: ...

随机推荐

  1. 将大数据利用 BCP 导出SqlServer数据到CSV

    --导出数据 --BCP [数据库]..[数据库表] out "d:\abc.csv" -c -t "|" -T bcp "SELECT * FROM ...

  2. 从使用到原理学习Java线程池

    线程池的技术背景 在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源.在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收. 所 ...

  3. 第二百八十一、二、三天 how can I 坚持

    又是三天,真搞不懂人到底是是什么,到底想要啥,好压抑. 周五,李东勇他们来北京开年会,晚上下班,去了趟团结湖公园,好冷,快冻死了,等着他们来了,见面,感觉好亲切,晚上一块吃了个火锅,玩的很happy. ...

  4. 第二百七十九天 how can I 坚持

    竟然说我是猪,也是有点受不了了.其实也没什么,无所谓. 一个人有了信仰,不管成不成功,至少不会迷茫. sql语句,left  on  and  和where,left on是先检索,再关联,主表是完整 ...

  5. MySQL分支Percona, cmake编译安装

    Percona是在MySQL基础上改进的,在功能和性能上有着很显著的提升.该版本提升了在高负载情况下的InnoDB的性能,为DBA提供一些非常有用的性能诊断工具:另外有更多的参数和命令来控制服务器行为 ...

  6. homework-01 "最大子数组之和"的问题求解过程

    写在前面:我的算法能力很弱,并且也是第一次写博文,总之希望自己能在这次的课程中学到很多贴近实践的东西吧. 1.这次的程序是python写的,这也算是我第一次正正经经地拿python来写东西,结果上来说 ...

  7. Linux使用locate命令定位文件

    FIND命令 很多Linux用户喜欢使用find命令来查找文件,例如他们通常喜欢这样做: find / -name 'pattern' 确实find的强大功能不仅仅用来查找文件,它能用来定位更加细节的 ...

  8. C#中ArrayList和string,string[]数组的转换

    转载原地址: http://www.cnblogs.com/nextsoft/articles/2218689.html 1.ArrarList 转换为 string[] : ArrayList li ...

  9. hdu 4496 (并差集)

    题意:给出一个图,m条边,输出删除前i条边后该图的联通块的个数. 思路:刚开始想着是不是联通问题,后来看明白题意后知道,如果从最后一条边添加的话,答案就会出来了,就是并差集的操作. #include& ...

  10. [PoC]某B2B网站的一个反射型XSS漏洞

    Author: Charlie 个人微博:http://YinYongYou.com 转载请注明出处. 工作过程纯粹手贱,测试了一下.然后发现了这么一个东西.有心利用能造成大范围影响.如可以自由修改用 ...