- 浏览: 60226 次
- 性别:
- 来自: 成都
最新评论
-
云_不忘初心:
如果是可视化界面插入空值 该怎么办
oracle插入空值 -
aa00aa00:
例子通俗易懂,我已经成功运行起来了
jsp调用oracle存储过程分页
首先看下在oracle中一般的分页代码
然后看下oracle存储过程中的通用分页代码的写法
相关的东西已经准备好了,现在看下在jsp中如何调用这个存储过程,如果使用mvc结构可以把相关代码提到业务逻辑层,这里为了方便展示就直接写在一起了
运行结果如下
select * from emp; --分页代码分解式第一步 select e.*,rownum rn from (select * from emp)e;--分页代码分解式第二步 select e.*,rownum rn from (select * from emp)e where rownum<10; ;--分页代码分解式第第三步 select * from (select e.*,rownum rn from (select * from emp)e where rownum<10) where rn>6; --最终的分页代码
然后看下oracle存储过程中的通用分页代码的写法
--由于返回值一个是集合,所以不能用一般的参数,必须先创建一个packageg,里面包含游标类型 --第一步创建一个package create or replace package fengyepackage as type fengye_cursor is ref cursor; --创建游标类型变量fengye_cursor end fengyepackage; --第二步创建一个procedure create or replace procedure sp_fengye(pageNow in number,pageSise in number,tableName in varchar2,sortOrder in varchar2,pageCount out number,fengye_cursor out fengyepackage.fengye_cursor) is v_rowCount number(2); --总记录数目 v_pageCount number(2); --总页数 v_fromline number(2); --从第v_fromline行开始获取返回值 v_toline number(2); --到v_toline number行结束 v_sql varchar2(1000); --装载sql语句的变量 begin v_sql:='select count(*) from '||tableName; --组织一个sql execute immediate v_sql into v_rowCount; --执行sql,并且把返回值赋给v_rowCount if mod(v_rowCount,pageSise)=0 then --用v_rowCount%pageSise=0的取余数的方式是错误的,这是java代码里面的用法 v_pageCount:=v_rowCount/pageSise; else v_pageCount:=ceil(v_rowCount/pageSise); --ceil相当于加了1 end if; v_toline:=pageNow*pageSise; v_fromline:=(pageNow-1)*pageSise; pageCount:=v_pageCount; v_sql:='select * from (select e.*,rownum rn from (select * from '||tableName||' '||sortOrder||')e where rownum<='||v_toline||') where rn>'||v_fromline;--两个连接符号之间要用空格隔开,否则java程序无法识别 open fengye_cursor for v_sql; --close fengye_cursor; --关闭游标,但是现在不能关闭否则java程序调用不到数据 --把游标的结果集传给JAVA的resultset之是不需要我们来手动的关闭游标的,因为JAVA把这个结果集接收过来的之后,如果JAVA对这个结果集操作完毕的话,JAVA会把这个结果集关闭掉的,不需要我们手动的去作任何操作! end;
相关的东西已经准备好了,现在看下在jsp中如何调用这个存储过程,如果使用mvc结构可以把相关代码提到业务逻辑层,这里为了方便展示就直接写在一起了
<%@ page language="java" import="java.sql.*,java.util.*" pageEncoding="gbk"%> <%@page import="oracle.jdbc.OracleTypes"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; String pageNowStr=request.getParameter("pageNow"); //当前是第几页 int pageNow=1; if(pageNowStr!=null){ pageNow=Integer.valueOf(pageNowStr); } %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <table border="1"> <%//这些代码可以移到业务逻辑成 Connection conn=null; CallableStatement cs=null; ResultSet result=null; int pageCount=0; try { Class.forName("oracle.jdbc.driver.OracleDriver"); conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","tiger"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } int pageSize=3; //每页多少条记录 try { String sql="{call sp_fengye(?,?,?,?,?,?)}"; cs=conn.prepareCall(sql); cs.setInt(1,pageNow); //注册当前页数 cs.setInt(2,pageSize); //注册每页多少条记录 cs.setString(3,"dept"); //注册要查询的表 cs.setString(4,"order by deptno desc"); //注册排序条件 cs.registerOutParameter(5,oracle.jdbc.OracleTypes.NUMBER); //注册返回值,总共分了多少页 cs.registerOutParameter(6,oracle.jdbc.OracleTypes.CURSOR); //注册返回值,当前页的所有记录 cs.execute(); pageCount=cs.getInt(5); //获取总共分了多少条记录 // System.out.println("pageCount"+pageCount); result=(ResultSet)cs.getObject(6); while(result.next()){ //循环取出当前页的记录 out.print("<tr><td>"+result.getInt(1)+"</td><td>"+ result.getString(2)+"</td></tr>"); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ result.close(); cs.close(); conn.close(); } %> </table> <% if(pageNow!=1){ out.print("<a href=oracleProcedureFengye.jsp?pageNow="+(pageNow-1)+">上一页</a> "); } for(int i=pageNow;i<pageNow+3;i++){ if(i<=pageCount) //使其不超过总页数 out.print("<a href=oracleProcedureFengye.jsp?pageNow="+i+">"+i+"</a> "); } if(pageNow<pageCount) out.print("<a href=oracleProcedureFengye.jsp?pageNow="+(pageNow+1)+">下一页</a>"); %> <br> </body> </html>
运行结果如下
发表评论
-
oracle的dos启动命令
2012-05-23 10:48 1206每次启动oracle时都需要启动监听和实例,但是通过点击控 ... -
java连接数据库用的DBHelper
2012-02-24 17:15 11407import java.io.*; import java. ... -
毕业设计遇到的问题
2011-11-06 17:01 702dwr与hibernate集成时候,可能会产生很多莫名其妙的 ... -
oracle例外处理
2011-10-30 17:10 685例外分类 oracle将例外分为预定义例外,非预 ... -
pl/sql进阶
2011-10-30 00:01 869------------------------分页----- ... -
oracle pl/sql
2011-10-29 15:21 849pl/sql是什么? pl/s ... -
oracle索引
2011-10-29 01:58 942索引是用于加速数据存取的数据对象,合理的使用索 ... -
oracle数据库管理-数据字典
2011-10-28 01:46 869数据字典是oracle ... -
oracle数据库管理-数据库用户及备份和导入
2011-10-27 18:40 5114每个oracle数据库应该至少有一名数据库管理员(db ... -
jsp oracle分页与sqlserver分页
2011-10-27 16:05 1107先来个sqlserver分页 数据库很简单就一张表 表字段有: ... -
oracle事物
2011-10-26 14:43 785事物: 事物用于保证数据的一致性,他 ... -
oracle的一些小窍门语法
2011-10-26 12:15 6121.将旧表中的数据导入到一个新表中 create table ... -
oracle的分页与合并查询
2011-10-26 01:40 9651.orcale的分页 一共有三 ... -
oracle表的复杂查询
2011-10-25 11:27 726命名列的别名可以带as,也可以不带as,命名表的别名不能 带a ... -
oracle插入空值
2011-10-25 10:57 5698首先申明一点,空值和0是截然不同的两个概念 插入值时可以选 ... -
oracle表的简单查询
2011-10-25 01:07 1021desc emp显示emp表的结构 ... -
oracle表的创建与删除
2011-10-25 00:12 29881.表名和列名的命名规则 <1.长度不能超过30 ... -
oracle权限与角色
2011-10-24 22:39 662... -
sqlserver与orcale在数据库与用户的组织结构上的区别
2011-10-24 22:37 758... -
oracle文件操作命令spool以及显示和环境设置
2011-10-24 22:31 1802------spool文件操作命令------------ ...
相关推荐
完整课程设计及源码,源码Java调用Oracle存储过程实现分页功能
<%@ include file="Strutstaglibs.jsp" %> <html> 分页技术信息显示页面 用户名 密 码 生 日 职 业 性 别 <td><bean:write name="temp" property=...
java web通用分页组件发布了! 超级强悍的java web通用分页组件,只要简单的一条sql语句就可以轻松的实现分页,目前对oracle,SQL Server2005,SQL server200,mysql都做了实现,程序...里面有调用例子oracle的数据库文件.
8. 写出Oracle增删改查的存储过程,并在java中调用。 9. 用ajax技术实现一个级联菜单功能。 10.写出插入法进行排序代码。 11.编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是...
★ JSP调用页面(全面支持struts1.2)(增、删、改、查),分页功能自动实现 (如果数据库是sqlserver,又需要分页的,请使用sqlserver2005) 2、特色 ☆ 一键生成,简洁使用。 ☆ 生成的代码全部开源,没有任何通过...
4.2 调用存储过程对象 4.2.1 CallableStatement对象的创建 4.2.2 IN、OUT及INOUT参数的使用 4.2.3 执行CallableStatement Object对象 4.2.4 CallableStatement对象使用实例 4.2.5 SQL Server存储过程编程经验...
第1 章 JSP 简介................................................................................10 1.1 什么是JSP........................................10 1.2 JSP 页面.....................................
234、存储过程和函数的区别 55 235、事务是什么? 55 236、游标的作用?如何知道游标已经到了最后? 55 237、触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别。 56 238、EJB容器...
234、存储过程和函数的区别 55 235、事务是什么? 55 236、游标的作用?如何知道游标已经到了最后? 55 237、触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别。 56 238、EJB容器...
19、oracle分页语句 47 20、从数据库中随机取50条 47 21、order by与group by的区别 47 22、commit在哪里会运用 47 23、行转列、列换行怎么转 48 24、什么是PL/SQL? 49 25、序列的作用 50 26、表和视图的关系 50 27...
Java面试题31.jdbc调用存储过程 Java面试题32.简单说一下你对jdbc的理解 Java面试题33.写一个jdbc的访问oracle的列子 Java面试题34.jdbc中preparedStatement比Statement的好处 Java面试题35.数据库连接池的作用 Java...
★ JSP调用页面(增、删、改、查),分页功能自动实现 3、特色: ☆ 一键生成,简洁使用。 ☆ 生成的代码全部开源,没有任何通过插件或链接库来做的操作。 ☆ 支持多表的多主键处理。 ☆ 支持数据事务的操作。 ☆ ...
★ JSP调用页面(增、删、改、查),分页功能自动实现 3、特色: ☆ 一键生成,简洁使用。 ☆ 生成的代码全部开源,没有任何通过插件或链接库来做的操作。 ☆ 支持多表的多主键处理。 ☆ 支持数据事务的...
22、用JDBC如何调用存储过程 23、JDBC中的PreparedStatement相比Statement的好处 24. 写一个用jdbc连接并访问oracle数据的程序代码 25、Class.forName的作用?为什么要用? 26、大数据量下的分页解决方法。 27、用...
22、用JDBC如何调用存储过程 109 23、JDBC中的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、Class.forName的作用?为什么要用? 111 26、大数据量下的分页解决...
22、用JDBC如何调用存储过程 109 23、JDBC中的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、Class.forName的作用?为什么要用? 111 26、大数据量下的分页解决...
GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...
5.Java中的分页、效率考虑。 6.简单介绍您所了解的structs。 1.xml在项目中的作用 2.s-EJB 与 e-EJB的区别 3.会话面的作用 4.cmp与bmp的优缺点 5.j2me程序的必需的几个部分 6.c/s与b/s的区别 7.构建一...
22、用JDBC如何调用存储过程 109 23、JDBC中的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、Class.forName的作用?为什么要用? 111 26、大数据量下的分页解决...