【存储过程】 在java语言中调用存储过程
来源:互联网 发布:阿里云虚拟内存不足 编辑:程序博客网 时间:2024/04/30 18:57
首先一定要连接数据库啊 private static Connection conn; static{ //第一步:加载驱动 try { Class.forName("oracle.jdbc.driver.OracleDriver"); //得到连接对象 conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","scott"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } 实例一: 【 create or replace procedure selectEmp(emp_no in number,ename out varchar2,job out varchar2,sal out number,deptno out number) is begin select ename,job,sal,deptno into ename,job,sal,deptno from emp where empno=emp_no; end selectEmp; 】 //调用存储过程 public static void procedure() throws SQLException{ //创建CallableStatement 参数in out 通过占位符传值 CallableStatement cas=conn.prepareCall("{call selectEmp(?,?,?,?,?)}"); //从1开始 int index = 1; //为占位符赋值 cas.setInt(index++, 7369);//赋值的是输入参数 //输出参数 cas.registerOutParameter(index++, oracle.jdbc.OracleTypes.VARCHAR); cas.registerOutParameter(index++, oracle.jdbc.OracleTypes.VARCHAR); cas.registerOutParameter(index++, oracle.jdbc.OracleTypes.NUMBER); cas.registerOutParameter(index++, oracle.jdbc.OracleTypes.NUMBER); //根据传递的参数值执行操作 如果第一个结果是 ResultSet 对象,则返回 true;如果第一个结果是更新计数或者没有结果,则返回 false boolean flag=cas.execute(); System.out.println(flag); if(!flag){//执行成功了 String ename=cas.getString(2); String job=cas.getString(3); int sal=cas.getInt(4); int deptno=cas.getInt(5); System.out.println(ename); System.out.println(job); System.out.println(sal); System.out.println(deptno); } } 实例二: 【 通过包声明一个存储过程 create or replace package emppackage is type empcursor is ref cursor; procedure selectEmps(emplist out empcursor); end emppackage; 包体: create or replace package body emppackage is procedure selectEmps(emplist out empcursor) is begin open emplist for select * from emp; end; end emppackage; 】 public static void testProcedure() throws SQLException{ //创建CallableStatement 参数in out 通过占位符传值 CallableStatement cas=conn.prepareCall("{call emppackage.selectEmps(?)}"); //从1开始 int index = 1; //为占位符赋值 cas.registerOutParameter(index++, oracle.jdbc.OracleTypes.CURSOR); //根据传递的参数值执行操作 返回false代表里面什么也没有,返回true代表返回的是ResultSet结果集 boolean flag=cas.execute(); System.out.println(flag); //OracleCallableStatement强制造型为oracle中的存储过程的对象 //调用里边的getCursor方法 返回的是ResultSet结果集 ResultSet rs = ((OracleCallableStatement)cas).getCursor(1); while(rs.next()){ System.out.println(rs.getInt(1)); } }
0 0
- 【存储过程】 在java语言中调用存储过程
- 在java语言中调用存储过程
- 【存储过程】在java语言中调用存储函数
- 在Java中怎么调用存储过程
- 在Java中调用存储过程(详细)
- 在java中调用mysql存储过程
- 在java中调用Oracle存储过程
- 在java中调用Oracle存储过程
- 在 java web 中调用存储过程
- 在Java中调用存储过程(详细)
- 在Java中调用存储过程
- 在Java语言中调用存储过程、存储函数、包头、包体
- oracle--在java中调用存储过程和存储函数
- 在java语言中访问存储过程和存储函数
- Java中调用存储过程
- Java中调用存储过程
- java中调用存储过程
- Java中调用存储过程
- Permission denied (publickey). -- Windows下使用Git Bash显示权限错误
- 静态方法和实例方法的区别
- 免费开放的星座运势接口分享
- VS2010 调试C++项目 fatal error LNK1123 错误解决办法
- 海量文本数据保存到数据库思路
- 【存储过程】 在java语言中调用存储过程
- [电子商务测试]版精华帖汇总
- Linux下Makefile的作用
- STM32系列第4篇--C语言复习
- Activity四种启动模式说明
- [C/C++11]_[初级]_[使用正则表达式库regex]
- flume+kafka+storm整合文件
- webview onReceivedError 接收不到404
- 【存储过程】在java语言中调用存储函数