Heim >Datenbank >MySQL-Tutorial >Java中调用Oracle中的存储过程的单元测试代码

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

WBOY
WBOYOriginal
2016-06-07 17:17:491771Durchsuche

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn