在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中对存储过程的调用方法

一:Java如何实现对存储过程的调用:    A:不带输出参数的    ---------------不带输出参数的---------------------------------- create ...
  • u013310119
  • u013310119
  • 2016年05月31日 15:40
  • 4333

C语言调用mysql的存储过程

有一张sc表,保存学生选课记录,有课程号,学号,平时分,卷面分,总分,建立过程如下 create class( cno varchar(8) not null, sno varchar(8) n...
  • u010193457
  • u010193457
  • 2015年07月21日 15:39
  • 2099

Mysql的存储过程,Mybatis对存储过程的调用

mysql存储过程1.存储过程简介我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储...
  • MyHerux
  • MyHerux
  • 2016年07月20日 12:25
  • 6928

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

需要拷贝连接Oracle的jar包,路径如下图所示: 连接Oracle数据库的代码: package demo.utils; import java.sql.Connection; ...
  • tangliuqing
  • tangliuqing
  • 2014年05月31日 23:36
  • 1217

Atiitt 使用java语言编写sql函数或存储过程

Atiitt 使用java语言编写sql函数或存储过程   1.1. java编写sql函数或存储过程的机制 1 1.2. Java编写sp的优点 1 1.3. 支持java源码,class文...
  • attilax
  • attilax
  • 2017年04月07日 22:01
  • 427

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

首先一定要连接数据库啊 private static Connection conn; static{ //第一步:加载驱动 try {...
  • yuanzexi
  • yuanzexi
  • 2016年03月21日 14:56
  • 158

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

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

java调用oracle简单存储过程

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

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

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

SQLServer2008分页存储过程和java调用

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

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