--语句块
conn scott/tiger;
declare
v_ename varchar2(10);
begin
select ename into v_ename from emp;
end;
--create procedure single result
creaate or replace procedure pro_getName(v_empno in number,v_ename out varchar2) is
begin
select ename into v_ename from emp where empno=v_empno;
end;
--java code
//loading driver
Class.forName("oracle.jdbc.driver.OracleDriver");
//getConnection
Connection conn = DriverManager.getConnection("jdbc:oracle:thin@localhost:1521:orcl","scott","tiger");
//getStatement
CallableStatement cs = conn.prepareCall("{pro_getName(?,?)}");
//setParameter
cs.setInt(1,111);
//registerOutParameter
cs.registerOutParameter(2,oracle.jdbc.OracleTypes.VARCHAR);
//execute();
cs.execute();
//getValue
String ename= cs.getString(2);
//close resource
cs.close();
conn.close();
--create procedure (resultSet) before create package ,cursor
--create package
create or replace package myPackage as
type p_myemp is ref cursor;
end myPackage;
--procedure
create or replace procedure pro_resultSet(v_cursor out myPackage.p_myemp) is
begin
open v_cursor is select * from emp;
end;
--java code
//loading driver
Class.forName("oracle.jdbc.driver.OracleDriver");
//getConnection
Connection conn = DriverManager.getConnection("jdbc:oracle:thin@localhost:1521:orcl","scott","tiger");
//getStatement
CallableStatement cs = conn.prepareCall("{pro_getName(?)}");
//registerOutParameter
cs.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR); //type is cursor
//execute();
cs.execute();
//getValue
ResultSet rs = cs.getObject(1);
//print value
while(rs.next()){
System.out.println(rs.get(0));
}
//close resource
rs.close();
cs.close();
conn.close();
--cursor
declare
cursor cs_emp is select empno,ename from emp;
v_no number(4);
v_name varchar2(20);
begin
open cs_emp;
fetch cs_emp into v_no,v_name;
loop
dbms_output.put_line(v_no || v_name);
exit when cs_emp%notfound;
end loop;
end;
declare
cursor cs_emp is select * from emp;
v_type cs_emp%rowtype;
begin
fetch cs_emp into v_type;
dbms_output.put_line(v_type.empno|| v_type.ename|| '......');
end;
declare
cursor cs_emp is select * from emp;
begin
for cs_emp into v_type loop
dbms_output.put_line(v_type.empno|| v_type.ename|| '......');
end loop;
end;
--输入表名:tableName,每页显示的记录数:num,当前页数:currentPage,排序字段:filed,顺序:sequence
--返回总记录数:sums,总页数:pageCount,结果集:rs;
create or replace package tPackage as
type p_page is ref cursor;
end tPackage;
create or replace pro_page(tableName in varchar2, num in number, currentPage in number, filed in varchar2, seq in varchar2 , v_page out tPackage.p_page,total out number,pageCount out number) is
v_minSize number;
v_maxSize number:=currentPage*num;
v_str varchar2(100);
begin
v_minSize:=(currentPage-1)*num+1;
v_str:='select * from (select r.*,rownum rn from (select * from '||tableName||' order by '||filed||' '||seq||') r where rownum<='||maxSize||') where rn>='|| minSize;
open v_page for v_str;
--计算总记录数和总页数
v_str :='select count(*) from '|| tableName;
execute immediate v_str into total;
--pageCount
if mod(total,num)=0 then
pageCount = total/num;
else
pageCount = total/num+1;
end if;
close v_page;
end;
--java 调用
public static void main(String[] args) {
int currentPage = 1;
int pageSize = 12;
try {
//load driver
Class.forName("oracle.jdbc.driver.OracleDriver");
//get connection
Connection connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","tiger");
//get CallableStatement
CallableStatement cs = connection.prepareCall("{call pro_page(?,?,?,?,?,?,?,?)}");
//set parammeter
cs.setString(1, "emp");
cs.setInt(2,pageSize);
cs.setInt(3,currentPage);
cs.setString(4,"sal");
cs.setString(5,"");
//registerOutParameter
cs.registerOutParameter(6,oracle.jdbc.OracleTypes.INTEGER);
cs.registerOutParameter(7,oracle.jdbc.OracleTypes.INTEGER);
cs.registerOutParameter(8,oracle.jdbc.OracleTypes.CURSOR);
//执行
cs.execute();
//总记录数
int rows = cs.getInt(6);
//总页数
int pageCount = cs.getInt(7);
//结果集
ResultSet rs = (ResultSet) cs.getObject(8);
System.out.println("总记录数为:"+rows+"--总页数为:"+pageCount+"----当前是第"+currentPage+"页每页显示"+pageSize+"条");
while(rs.next()){
System.out.println("--------------------------------");
System.out.print("编号:"+rs.getInt(1));
System.out.print("姓名:"+rs.getString(2));
System.out.print("薪水:"+rs.getDouble(6));
System.out.println("--------------------------------");
}
} catch (Exception e) {
e.printStackTrace();
}
}
分享到:
相关推荐
Oracle Database 11g PL/SQL程序设计 ★第一部分(part1)★ ——※ 注意:该电子书99.4M,分为2个压缩包, 需要将全部2个压缩包下载才能解压缩,单个部分无法解压。 此为第1个包,另外1个包以及源代码包可通过本人...
oracle10g pl/sql完备教程,供初学者学习与开发者参考
Oracle PL/SQL专家指南-高级PL/SQL解决方案的设计与开发
Oracle PL/SQL实例精讲第五版--里面的使用表,课后答案,以及书中的案例,文件里有3个包。 很难受,本来只是想1积分的,居然这么高,没法修改。
《Oracle PL/SQL程序设计(第5版)(套装上下册)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何...
PL/SQL是Oracle对标准数据库语言的扩展,Oracle公司已经将PL/SQL整合到Oracle 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本教程将以循速渐进的方式讲述PL/SQL基础语法,结构和组件、以及...
· 第六章 PL/SQL与Oracle间交互 2008-04-08 · 第五章 PL/SQL集合与记录(2) 2008-04-08 · 第五章 PL/SQL集合与记录(1) 2008-04-08 · 第四章 PL/SQL的控制结构 2008-04-08 · 第三章 PL/SQL数据...
oracle数据库 sql 和pl/sql实例教程
Oracle技术文档,Pl/SQl 的使用说明书
Oracle数据库SQL和PL/SQL实例教程 西安电子科技大学出版社
本书以Oracle的最新版本12c为基础,呈现的是最新的PL/SQL技术,这一点也优于已出版的同类书.全书以一个综合性的人力资源项目为驱动,不仅能将各个理论知识点很好地融入实践,而且还能让读者体验完整的项目实操过程...
oracle 9i pl/sql程序设计笔记。
Oracle Database 12c PL/SQL开发指南(第7版)书中示例的PL/SQL源代码
15oracle的PL/SQL编程-分页 PPT 15oracle的PL/SQL编程-分页 PPT
PL/SQL, Oracle's procedural extension of SQL, is an advanced fourth-generation programming language (4GL). It offers modern features such as data encapsulation, overloading, collection types, ...
sql是关系数据库的基本操作语言 它是应用程序与数据库进行交互操作的接口 pl/sql是oracle特有的编程语言 它不仅具有过程编程语言的基本特征 循环 条件分支等 而且还具有对象编程语言的高级特征 重载 继承等 ...
Considered the best Oracle PL/SQL programming guide by the Oracle community, this definitive guide is precisely what you need to make the most of Oracle’s powerful procedural language. The sixth ...
Oracle PL/SQL实例编程 Oracle PL/SQL实例编程 Oracle PL/SQL实例编程
《oracle database 11gpl/sql编程实战》通过动手练习、大量的示例以及实际的项目帮助读者掌握pl/sql。书中包含大量最佳实践,涵盖了pl/sql语言所有的最新功能和改进之处。每章末尾配有测验题,可以帮助读者进一步...
PL/SQL Developer(pl/sql)是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。 <br>此版本包含注册文件和简体中文语言安装包 <br>Enhancements in PL/SQL Developer 7.1.5 ====================...