Home > Database > Mysql Tutorial > Java中调用Oracle中的存储过程的单元测试代码

Java中调用Oracle中的存储过程的单元测试代码

WBOY
Release: 2016-06-07 17:17:49
Original
1763 people have browsed it

Oracle中的存储过程: /* 创建一个存储函数,返回指定员工的姓名,薪水和年收入 */ create or replace function queryEmp2(eno in

Oracle中的存储过程:

/*

创建一个存储函数,返回指定员工的姓名,薪水和年收入

*/

create or replace function queryEmp2(eno in number, empname out VARCHAR2,empsal out NUMBER)

--返回年收入

return NUMBER

as

begin

  select ename,sal into empname, empsal from emp where empno=eno;

  --返回年收入

  return empsal*12 + nvl(empsal,0);


end;

/

调用上面的存储过程的单元测试:

package demo;


import java.sql.CallableStatement;

import java.sql.Connection;

import java.sql.DriverManager;


import org.junit.Test;


public class Demo {

@Test

public void testQueryEmpl() throws Exception {

//注册驱动

Class.forName("oracle.jdbc.OracleDriver");

//注意如果端口不是1521时,,这时要给他改掉。

String url = "jdbc:oracle:thin:@localhost:1521:orcl";

//默认使用的是orcale中的用户scott

String user = "scott";

//scott的用户名和密码是tiger

String password = "tiger";

//调用存储过程。

String sql = "{call queryEmpl2(?,?,?)}";


Connection conn = DriverManager.getConnection(url,user,password);

CallableStatement call = conn.prepareCall(sql);


//赋参数值

call.setInt(1, 7839);

//对于out参数

//下面的方法是告诉输出的数据的参数类型,即Oracle中的varchar类型。

call.registerOutParameter(2, oracle.jdbc.OracleTypes.VARCHAR);

call.registerOutParameter(3, oracle.jdbc.OracleTypes.NUMBER);


//执行

call.execute();

//取结果,获得名字和薪水

String name = call.getString(2);

double sal = call.getDouble(3);


System.out.println(name + " " + sal);


//关闭资源

call.close();

conn.close();

}

}

linux

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template