顺序控制语句
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. Standalone HBase

    This is the default mode. Standalone mode is what is described in the quickstart section. In standal ...

  2. 【Hadoop代码笔记】Hadoop作业提交之JobTracker接收作业提交

    一.概要描述 在上一篇博文中主要描述了JobTracker接收作业的几个服务(或功能)模块的初始化过程.本节将介绍这些服务(或功能)是如何接收到提交的job.本来作业的初始化也可以在本节内描述,但是涉 ...

  3. RabbitMQ C# 例子 -摘自网络

    //刚刚接触,如有不对还望不吝指正 public static void StartUp() { #region 前期准备工作 ConnectionFactory factory = new Conn ...

  4. cmake编译win下64位obs

    obs是一款开源编码推流工具,简单易用,非常流行.一次项目中,发现本台式机I3处理器下32位obs推流CPU使用率100%.而使用的第三方设备在64位下,性能较好.所以需要编译64位obs并且编译相应 ...

  5. ORM 是一种讨厌的反模式

    本文由码农网 – 孙腾浩原创翻译,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划! (“Too Long; Didn’t Read.”太长不想看,可以看这段摘要 )ORM是一种讨厌的反模式,违背 ...

  6. HDU 5680 zxa and set (数学 推导结论)

    zxa and set 题目链接: http://acm.hust.edu.cn/vjudge/contest/121332#problem/G Description zxa has a set , ...

  7. hdu 1151 Air Raid(二分图最小路径覆盖)

    http://acm.hdu.edu.cn/showproblem.php?pid=1151 Air Raid Time Limit: 1000MS   Memory Limit: 10000K To ...

  8. poj2155 树状数组 Matrix

    Matrix Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 14826   Accepted: 5583 Descripti ...

  9. Spring @RequestHeader用法

    Spring MVC提供了 @RequestHeader注解,能够将请求头中的变量值映射到控制器的参数中.下面是一个简单的例子: import org.springframework.stereoty ...

  10. Mysql中关于 group_concat函数详解

    group_concat()主要功能:能将相同的行组合起来 完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Sepa ...