当前位置:首页 > 开发 > 数据库 > 正文

java 调用 oracle 存储过程

发表于: 2012-06-29   作者:blackproof   来源:转载   浏览次数:
摘要: java 调用 oracle 存储过程三个实例(看前知识,需要存储过程,jdbc相关一点点)   1.插入,无返回值   oracle 的 procedure 为     create or replace procedure add_project(proid varchar2,

java 调用 oracle 存储过程三个实例(看前知识,需要存储过程,jdbc相关一点点)

 

1.插入,无返回值

 

oracle 的 procedure 为

 

 

create or replace procedure add_project(proid      varchar2,
                                        proversion number,
                                        proname    varchar2,
                                        customID varchar2 default null) is
begin
  insert into T_LPROMIS_XMGL_GBBXMXX pro
    (xmid, xmbbh, xmmc,pro.khid)
  values
    (proid, proversion, proname,customID);
end;
 

 

2.查询,有一个out varchar的返回值

 

oracle 的 procedure 为

 

 

create or replace procedure query_project
(proname in varchar2, proid out varchar2)
is 
begin
  select pro.xmid into proid from T_LPROMIS_XMGL_GBBXMXX pro
where pro.xmmc = proname;
end;
 

 

3.查询,有一个out ref cursor的返回值

 

oracle 的 procedure 为

 

 

create or replace package query_project_pck
as 
type pro_ref_cursor_type is ref cursor;
type pro_table is table of varchar(100);
type pro_record is record(name varchar(100),id varchar(100));
procedure pro_procedure(name varchar,id varchar);
end query_project_pck; -- define package

create or replace procedure query_pro(pro_result out query_project_pck.pro_ref_cursor_type) is
begin
  open pro_result for
    select pro.xmid, pro.xmmc,pro.updatetime from T_LPROMIS_XMGL_GBBXMXX pro return pro_record_type;
end; --create procedure using ref cursor
 

以上为oracle数据库

 

下面就是jdbc call procedure 了,上代码:

 

 

public static void test() throws ClassNotFoundException, SQLException{
		System.out.println("=====Test.test=====");
		Class.forName("oracle.jdbc.driver.OracleDriver");
		Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.32.227:1521:orcl","use","password");
		//Connection conn = new Conn().getConnection();
		CallableStatement cstmt = null;
		ResultSet rs = null;
		try{
			
			// 过程调用,无返回值
			cstmt = conn.prepareCall("call add_project(?,?,?)");
			cstmt.setString(1,"testproject1");
			cstmt.setInt(2, 0);
			cstmt.setString(3, "super man project");
			cstmt.execute();
			cstmt.setString(1, "testproject2");
			cstmt.setInt(2, 0);
			cstmt.setString(3, "a worker project");
			cstmt.execute();
			cstmt.setString(1, "testproject3");
			cstmt.setInt(2, 0);
			cstmt.setString(3, "a user project");
			cstmt.execute();
			System.out.println("插入成功");
			
			cstmt = conn.prepareCall("call query_project(?,?)");
			cstmt.registerOutParameter(2,Types.VARCHAR);
			cstmt.setString(1, "项目");
			cstmt.execute();
			System.out.println(cstmt.getString(2));
			cstmt = conn.prepareCall("call query_pro(?)");
			cstmt.registerOutParameter(1, OracleTypes.CURSOR);
			cstmt.execute();
			rs = (ResultSet) cstmt.getObject(1);
			while(rs.next())
			{
				
				System.out.println("id= "+rs.getString(1));
				System.out.println("name="+rs.getString(2));
				System.out.println("msg="+rs.getString(3));
			}
			
			if(!rs.isClosed())
				rs.close();
			cstmt.close();
			conn.close();
		}catch(Exception e){
			System.out.println("=====Test.test=====\n操作失败");
			e.printStackTrace();
		}
	}
 

 

完毕

 

 

java 调用 oracle 存储过程

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
----创建的存储过程 create or replace procedure addTest(v1 in number, v2 in number,res out num
Oracle调用存储过程 pl/sql执行: SQL窗口: call procedure_name(parameter); begin procedure_name
本文主要是总结 如何实现 JDBC调用Oracle的存储过程,从以下情况分别介绍: [1]、只有输入IN参数,
为了测试这个存储过程,我遥了一圈去做这个事情,这里说一下我自己接受到任务和自己开始是怎么想的
创建有参存储函数findEmpNameAndSal(编号),查询7902号员工的的姓名和月薪,【返回多个值,演示out
Oracle里可以使用多种语言来编写存储过程,比如Pro*C/C++,PL/SQL,COBOL,在Oracle8i开始支持用Java编
1 存储过程介绍 存储过程是指用于特定操作的pl/sql块,是由流控制和sql语句书写的过程。 存储过程经
在JDBC API中提供了调用存储过程的方法,通过CallableStatement对象进行操作。CallableStatement对
不带参数的存储过程可以直接使用“ 调用DB存储过程”控件,将存储过程名称配置进去即可。 带返回值的
看了下mybatis源码,有调用存储过程的例子,整理下。 参数形式: create procedure sptest.adder(in
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号