【4】Oracle_Java程序调用存储过程和存储函数

前端之家收集整理的这篇文章主要介绍了【4】Oracle_Java程序调用存储过程和存储函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1、Java连接oracle的jar包

ojdbc14-10.2.0.1.0.jar

2、数据库连接字符串


Stringdriver="oracle.jdbc.driver.OracleDriver";
Stringurl="jdbc:oracle:thin:@192.168.106.128:1521:orcl";
Stringuser="scott";
Stringpassword="orcl";
说明:url连接的是虚拟机主机的ip地址
Oracle的连接初始化:
privateConnectionconn;
privateCallableStatementcs;
privateResultSetrs;
@Before
publicvoidinit()throwsException{
String"scott";
String"orcl";
Class.forName(driver);
//获取连接对象
conn=DriverManager.getConnection(url,user,62)">password);
}
@After
voiddestroy()throwsException{
if(rs!=null){
rs.close();
}
cs!=cs.close();
}
conn!=conn.close();
}
}
测试:OracleJDBC的连接:
/**
*OracleJDBC连接
*@throwsException
*/
@Test
voidtestOracleConnection()throwsException{
//创建CallableStatement对象
cs=conn.prepareCall("select*fromemp");
//执行查询结果
rs=cs.executeQuery();
while(rs.next()){
System.out.println(rs.getObject(1)+":"+rs.getString("ename"));
}
};
运行:

3、实现过程的调用

(1)调用无返回值的存储过程

*如何调用无返回值的存储过程
*pro_add_sal(enoinnumber)
voidtestOracleCallProcedure()conn.prepareCall("{callpro_add_sal(?)}");
cs.setInt(1,7788);
cs.executeQuery();
};

(2)调用有返回值的存储过程

/**
*调用有返回值的存储过程
*pro_emp_totalsal(enonumber,totalsaloutnumber)
@throwsException
*/
@Test
voidtestOracleCallProcedureOutNumber()throwsException{
//创建CallableStatement对象
cs=conn.prepareCall("{callpro_emp_totalsal(?,?)}");
//注册一个输出参数
cs.registerOutParameter(2,OracleTypes.NUMBER);
cs.executeQuery();
System.out.println("7788的年金是"+cs.getObject(2));
};
测试结果:

(3)调用有返回值是游标(cursor)类型的存储过程

*调用有返回值是cursor类型的存储过程
*pro_emplist(dnonumber,emplistoutsys_refcursor)
voidtestOracleCallProcedureOutCursor()"{callpro_emplist(?,10);
OracleTypes.CURSOR);
cs.executeQuery();
//需要强转OracleCallableStatement
rs=((OracleCallableStatement)cs).getCursor(2);
rs.next()){
System.out.println(rs.getObject(1)+":"+rs.getString("ename"));
}
};
测试结果:

4、实现函数调用

(1)调用有返回值的类型的存储函数,返回值类型为number

/**
*调用有返回值的类型的存储函数
*fun_emp_totalsal(enonumber)returnnumber
@throwsException
*/
@Test
voidtestOracleCallFunctionReturnNumber()throwsException{
//创建CallableStatement对象
conn.prepareCall("{?=callfun_emp_totalsal(?)}");
//注册一个输出参数
cs.registerOutParameter(1,OracleTypes.NUMBER);
cs.setInt(2,7788);
cs.executeQuery();
System.cs.getObject(1));
};
测试结果:

(2) 调用有返回值类型的存储函数,返回值类型为varchar
/**
*调用有返回值的类型的存储函数,返回类型是varchar
*fun_emp_dname(dnonumber)returndept.dname%type
@throwsException
*/
@Test
voidtestOracleCallFunctionReturnVarchar()throwsException{
//创建CallableStatement对象
"{?=callfun_emp_dname(?)}");
//注册一个输出参数
VARCHAR);
cs.executeQuery();
System."部门名称是:"+cs.getObject(1));
};
测试结果:
原文链接:https://www.f2er.com/oracle/211605.html

猜你在找的Oracle相关文章