Java调用Oracle分页存储过程
来源:互联网 发布:ip与mac地址扫描工具 编辑:程序博客网 时间:2024/06/05 08:32
Java调用Oracle分页存储过程
由于oracle存储过程没有返回值,它的所有返回值都是通过out参数来替代的,列表同样也不例外,但由于是集合,所以不能用一般的参数,必须要用pagkage了.所以要分两部分,
1, 建一个程序包。如下:
create or replace package testpackage as type test_cursor is ref cursor;end testpackage;2,建立存储过程,存储过程为:
create or replace procedure my_page(v_in_tableName in varchar2, v_in_pageNow in number, v_in_pagesize in number, myrows out number, myPageCount out number, p_cursor out testpackage.test_cursor) is --sql语句 v_sql varchar2(500); --计算分页数 v_begin number := (v_in_pageNow - 1) * v_in_pagesize + 1; v_end number := v_in_pageNow * v_in_pagesize; begin --拼接sql v_sql := 'select t2.* from (select t1.*,rownum rn from (select *from ' || v_in_tableName || ') t1 where rownum<=' || v_end || ') t2 where rn>=' || v_begin; open p_cursor for v_sql;--打开游标 select count(*) into myrows from employee; if mod(myrows, myPageCount) = 0 then myPageCount := myrows / v_in_pagesize; else myPageCount := myrows / v_in_pagesize + 1; end if; end;Java调用的代码:
import java.sql.*;import oracle.jdbc.OracleCallableStatement;public class TestProcedurePage {public TestProcedurePage() {}public static void main(String[] args) {String driver = "oracle.jdbc.driver.OracleDriver";String strUrl = "jdbc:oracle:thin:@10.10.1.29:1521:testdb";Statement stmt = null;ResultSet rs = null;Connection conn = null;try {Class.forName(driver);conn = DriverManager.getConnection(strUrl, "neb", "testneb");CallableStatement proc = null; // 创建执行存储过程的对象// proc = conn.prepareCall("{call p_get_price(?,?,?,?) }"); //设置存储过程// call为关键字.proc = conn.prepareCall("{call my_page(?,?,?,?,?,?) }"); // 设置存储过程/* * proc.registerOutParameter(1, oracle.jdbc.OracleTypes.NUMBER); * proc.registerOutParameter(2, oracle.jdbc.OracleTypes.VARCHAR); * 下面这样写也可以 proc.registerOutParameter(1, * oracle.jdbc.OracleTypes.FLOAT); proc.registerOutParameter(2, * oracle.jdbc.OracleTypes.CHAR); proc.registerOutParameter(3, * oracle.jdbc.OracleTypes.CURSOR); proc.setString(4, "3"); * //设置第一个输入参数 */proc.setString(1, "employee"); // 设置第一个输入参数proc.setInt(2, 2);proc.setInt(3, 10);// 设置普通输出参数proc.registerOutParameter(4, oracle.jdbc.OracleTypes.NUMBER);proc.registerOutParameter(5, oracle.jdbc.OracleTypes.NUMBER);// 设置游标输出参数proc.registerOutParameter(6, oracle.jdbc.OracleTypes.CURSOR);proc.execute();// 执行// 获取结果集的方式一:// rs = (ResultSet) proc.getObject(3);// 获取结果集的方式二:rs = ((OracleCallableStatement) proc).getCursor(6);while (rs.next()) {System.out.println(rs.getString(1) + "," + rs.getString(2)+ "," + rs.getString(3) + "," + rs.getString(4));}} catch (SQLException ex2) {ex2.printStackTrace();} catch (Exception ex2) {ex2.printStackTrace();} finally {try {if (rs != null) {rs.close();if (stmt != null) {stmt.close();}if (conn != null) {conn.close();}}} catch (SQLException ex1) {}}}}
阅读全文
0 0
- java调用Oracle分页存储过程
- Java调用Oracle的分页存储过程
- Java调用Oracle分页存储过程
- java调用分页存储过程
- Java调用Oracle数据库的分页存储过程
- Oracle分页存储过程及java的具体调用方法
- oracle存储过程分页以及在java中调用
- oracle存储过程实现JAVA调用的分页
- java调用oracle数据库的分页存储过程
- java Oracle存储过程分页
- java Oracle存储过程分页
- java Oracle存储过程分页
- C#调用Oracle存储过程分页
- C#调用Oracle存储过程分页
- Oracle通用分页存储过程JDBC调用
- C#调用Oracle存储过程分页
- oracle实现存储过程的分页并用java代码调用存储过程
- java调用oracle存储过程
- 资深PHP开发者对未来程序员的十点技术指导
- Mac上创建virtualenv失败的简单解决办法,python3
- 招银网络面试。。。
- Java反射简单实践
- 写给所有程序员_寻求更优解_你值得更好的
- Java调用Oracle分页存储过程
- crate数据库启动问题{可通用}
- Android Studio导入其他项目
- 构建一个简单的服务器环境Ubuntu 16.04.3 x64
- Linux 内核时间结构
- 软件测试流程
- rot47 中文 转 ASCII
- Linux之我最常用的命令
- Java反射机制-简单案例实现(代码篇)