您好,欢迎访问一九零五行业门户网

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

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();
}
}
其它类似信息

推荐信息