oracle顺序控制语句goto、null和分页过程中输入输出存储、java程序的调用过程
顺序控制语句
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程序的调用过程的更多相关文章
- oracle 11g在安装过程中出现监听程序未启动或数据库服务未注册到该监听程序
15511477451 原文 oracle 11g在安装过程中出现监听程序未启动或数据库服务未注册到该监听程序? 环境:win7 64位系统.oracle11g数据库 问题描述:在win7 64位系统 ...
- [转帖]浅析java程序的执行过程
浅析java程序的执行过程 转帖来源: https://www.cnblogs.com/wangjiming/p/10315983.html 之前学习过 这一块东西 但是感觉理解的不深刻. copy一 ...
- Java程序的执行过程
Java程序的执行过程 编译器将 Java 源代码编译成字节码class文件 类加载到 JVM 里面后,执行引擎把字节码转为可执行代码 执行的过程,再把可执行代码转为机器码,由底层的操作系统完成执行
- Hadoop中客户端和服务器端的方法调用过程
1.Java动态代理实例 Java 动态代理一个简单的demo:(用以对比Hadoop中的动态代理) Hello接口: public interface Hello { void sayHello(S ...
- 一个Java程序的执行过程(转)
我们手工执行java程序是这样的: 1.在记事本中或者是UE的文本编辑器中,写好源程序: 2.使用javac命令把源程序编译成.class文件: 编译后的.class(类字节码)文件中会包含 ...
- Java程序执行的过程
ava程序执行的过程: Step1:将字节码加入内存: Step2:对字节码进行合法性检查: Step3:jvm会为每个字节码文件都生成一个对象(class): Step4:执行静态代码块,初始化静态 ...
- 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- ...
- 浅析java程序的执行过程
在研究任何一门语言时,无论是面向过程的c,c++(面向过程和面向对象),还是面向对象的.net,java等,弄清语言执行过程至关重要. 何为语言执行过程? 所谓语言执行过程,指对于任何一门语言,如j ...
- c++中六种构造函数的实现以及9中情况下,构造函数的调用过程
六种构造函数的实现代码例如以下: #include<iostream> using namespace std; //c++中六种默认的构造函数 class Test { public: ...
随机推荐
- Unity3D-数学相关
1. Transform.rotation:对象在世界坐标系下的旋转:Transform.localRotation:对象在父对象的局部坐标系下的旋转.两个变量的类型均为四元素. (1)得到游戏对象当 ...
- homework_08
一.C++变量的作用域和生命周期 上面的程序中第一个正整数a的作用域是整个程序,而第二个正整数a的作用域是大括号内,除了大括号它的生命周期就结束了.因此先输出的是2,而后输出的是1. 二.理解堆和栈, ...
- iOS图形处理和性能
转自陶丰平的博客 原文的题目是Designing for iOS: Graphics & Performance,晚上花了两个不到小时大致翻译了下. ---Begin--- 在之前的文章里 ...
- 转载robots.txt的学习
转载原地址: http://www.monring.com/seo/aspdotseo-robot.html 在国内,robots.txt文件,对于用户来说他是个可有可无的东西,也不会有人去看.但对于 ...
- Base64.java 工具类
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOExceptio ...
- Random的nextInt用法
因为想当然的认为Random类中nextInt()(注:不带参数),会产生伪随机的正整数,采用如下的方式生成0~99之间的随机数: Random random = new Random(); rand ...
- 更改Android AVD路径
添加环境变量 变量名:ANDROID_SDK_HOME 变量值:D:\Program Files\Java //SDK路径
- Centos7安装Docker Engine
一.先决条件 首选需要一个64位操作系统和3.10或者更版本的内核. 查看当前内核版本: $ uname -r -.el7.x86_64 二.yum安装Docker Engine 安装Docker E ...
- Java网页数据采集器[上篇-数据采集]【转载】
开篇 作为全球运用最广泛的语言,Java 凭借它的高效性,可移植性(跨平台),代码的健壮性以及强大的可扩展性,深受广大应用程序开发者的喜爱. 作为一门强大的开发语言,正则表达式在其中的应用当然是必不可 ...
- [Angular 2] Start with Angular2
Create a index.html: <!DOCTYPE html> <html> <head> <title>Really Understandi ...