在java语言中调用存储过程

原创 2012年03月22日 20:27:17
首先一定要连接数据库啊
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));
		}
	}

相关文章推荐

在Java语言中调用存储过程、存储函数、包头、包体

需要拷贝连接Oracle的jar包,路径如下图所示: 连接Oracle数据库的代码: package demo.utils; import java.sql.Connection; ...

【存储过程】 在java语言中调用存储过程

首先一定要连接数据库啊 private static Connection conn; static{ //第一步:加载驱动 try {...

java中用事物控制语言调用数据库中的数据,以及调用存储过程或函数

定义一个工具类: package com.etc.util; import java.sql.Connection; import java.sql.DriverManager; import...
  • DOVEty
  • DOVEty
  • 2013年09月18日 12:31
  • 636

如何在Java程序中调用存储过程

  • 2011年11月09日 17:16
  • 45KB
  • 下载

java调用oracle简单存储过程

  • 2012年01月19日 15:59
  • 48KB
  • 下载

在java语言中调用存储函数

连接oracle数据库 private static Connection conn; static{ //第一步:加载驱动 try { Class.forName("oracle...
  • w_l_j
  • w_l_j
  • 2012年03月22日 20:28
  • 1330

JAVA调用ORACLE存储过程游标使用

  • 2010年03月05日 16:57
  • 19.21MB
  • 下载

C语言调用mysql的存储过程

有一张sc表,保存学生选课记录,有课程号,学号,平时分,卷面分,总分,建立过程如下 create class( cno varchar(8) not null, sno varchar(8) n...

java调用oracle存储过程

  • 2011年07月28日 10:47
  • 7KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在java语言中调用存储过程
举报原因:
原因补充:

(最多只允许输入30个字)