16—plsql编程之分页过程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
--创建book表
create table book(bookId number,bookName varchar2(50),publicHouse varchar2(50)); --编写过程
--in表示这是一个输入参数,默认值是in
--out表示这是一个输出参数。
create or replace procedure loonggg_pro6(lbookId in number,lbookName in
varchar2,lpublicHouse in varchar2)is
begin
insert into book values(lbookId,lbookName,lpublicHouse);
end;
java的调用:
package net.loonggg.java;
import java.sql.*;
public class Test1 {
public static void main(String[] args) {
try {
//1.0加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//2.0得到链接
Connection ct =
DriverManager.getConnection("jdbc:oracle:thin:@10.116.62.18:1521: loonggg","SCOTT","loonggg");
//3.0创建CallableStatement
CallableStatement cs = ct.prepareCall("{call
loonggg_pro6(?,?,?)}");
//给?赋值
cs.setInt(1, 10);
cs.setString(2, "笑傲江湖");
cs.setString(3, "理工大出版社");
//4.0执行
cs.execute();
//关闭资源
cs.close();
ct.close();
} catch (Exception e) {
e.printStackTrace();
}finally{
//关闭打开的各个资源
}
}
}
--有输入和输出的存储过程
create or replace procedure loonggg_pro7
(lNo in number,lName out varchar2)is
begin
select ename into lName from emp where empno=lNo;
end;
-------------------------
create or replace procedure loonggg_pro7
(lNo in number,lName out varchar2,lSal out number,lJob out varchar2)is begin
select ename ,sal,job into lName,lSal,lJob from emp where empno=lNo;
end;
java的调用见test中的test2。
--返回结果集的过程
--1.创建一个包,在该包中定义了一个类型,是一个游标类型。
create or replace package testpackage as
type test_cursor is ref cursor;
end testpackage;
--创建存储过程
create or replace procedure loonggg_pro8
(Lno in number,L_cursor out testpackage.test_cursor)is
begin
open L_cursor for select*from emp where deptno =Lno;
end;
--如何在java中调用该过程:见test中的test3。
--oracle的分页
select t1.*,rownum rn from(select*from emp) t1;
select t1.*,rownum rn from(select*from emp) t1 where rownum<=10;
--在分页时大家可以把下面的sql语句当作一个模板使用。
select*from
(select t1.*,rownum rn from(select*from emp) t1 where rownum<=10)where rn>=6;
--先开发一个包
--1.创建一个包,在该包中定义了一个类型,是一个游标类型。
create or replace package testpackage as
type test_cursor is ref cursor;
end testpackage;
--开始编写分页的过程。
create or replace procedure fenye
(tableName in varchar2,
Pagesize in number,
pageNow in number,
myrows out number,--总记录数
myPageCount out number,--总页数
l_cursor out testpackage.test_cursor--返回记录集
)is
--定义部分
--定义sql语句字符串
v_sql varchar2(1000);
--定义两个整数
v_begin number:=(pageNOW-1)*Pagesize+1;