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: ...
随机推荐
- Hadoop MapReduce程序中解决第三方jar包问题方案
hadoop怎样提交多个第三方jar包? 方案1:把所有的第三方jar和自己的class打成一个大的jar包,这种方案显然笨拙,而且更新升级比较繁琐. 方案2: 在你的project里面建立一个lib ...
- 内核源码分析之软中断(基于3.16-rc4)
1.和软中断相关的数据结构: softing_vec数组(kernel/softirq.c) static struct softirq_action softirq_vec[NR_SOFTIRQS] ...
- 单词计数WordCountApp.class
public class WordCountApp { // 可以指定目录,目录下如果有二级目录的话,是不会执行的,只会执行一级目录. private static final String INPU ...
- Spark视频 王家林 Spark公开课大讲坛第二期: Spark的Shark和SparkSQL
王家林 Spark公开课大讲坛第一期:Spark把云计算大数据速度提高100倍以上 http://edu.51cto.com/lesson/id-30816.html Spark实战高手之路 系列书籍 ...
- Linux虚拟机创建后如何进行登录(Windows Azure)
Linux虚拟机创建后如何进行登录 若要管理虚拟机的设置以及在其上运行的应用程序,可以使用安全外壳 (SSH) 客户端.为此,您必须在计算机上安装要用于访问虚拟机的 SSH 客户端.您可以选择很多 S ...
- homework_08
一.C++变量的作用域和生命周期 上面的程序中第一个正整数a的作用域是整个程序,而第二个正整数a的作用域是大括号内,除了大括号它的生命周期就结束了.因此先输出的是2,而后输出的是1. 二.理解堆和栈, ...
- crontab 定时任务格式
如下内容节选自<Linux Crontab 定时任务 命令详解> 用crontab -e 添加要执行的命令 添加的命令必须以如下格式: * * * * * /command path 前五 ...
- CodeForces 689D Friends and Subsequences (RMQ+二分)
Friends and Subsequences 题目链接: http://acm.hust.edu.cn/vjudge/contest/121333#problem/H Description Mi ...
- poj 3635 Full Tank? ( bfs+dp思想 )
Full Tank? Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5857 Accepted: 1920 Descri ...
- hibernate id生成器配置
1.uuid配置 <id name="tomdId" type="java.lang.String"> <column name=" ...