如何使用Java在Oracle数据库中调用IN和OUT参数的存储函数 [英] how to call stored function of IN and OUT parameter in Oracle Database using Java
本文介绍了如何使用Java在Oracle数据库中调用IN和OUT参数的存储函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
public String getObjectDetails(String buffer) {
dbcon con = new dbcon();
ResultSet rs = null;
String name_msg=null;
String type_msg=null;
int type_code=0;
int name_code=0;
try {
rs = con.dbstate().createStatement().executeQuery("SELECT pkg_test1.get_object_type('"+buffer+"',"+type_code+",'"+type_msg+"'),pkg_test1.get_object_name('"+buffer+"',"+name_code+",'"+name_msg+"') from dual");
if (rs.next()) {
return rs.getString(1) + "," + rs.getString(2);
}
} catch (SQLException ex) {
Logger.getLogger(username.class.getName()).log(Level.SEVERE, null, ex);
}
return "";
}
而且,我正试图从PKG_TEST1
包内声明的这两个函数中获取信息
And, I'm trying to get information from these two function declared inside PKG_TEST1
package
FUNCTION get_object_type(i_buffer IN VARCHAR2, o_errcode OUT NUMBER,
o_errmsg OUT VARCHAR2) RETURN VARCHAR2;
FUNCTION get_object_name(i_buffer IN VARCHAR2, o_errcode OUT NUMBER,
o_errmsg OUT VARCHAR2) RETURN VARCHAR2;
但是,我遇到了错误
java.sql.SQLException: ORA-06572: Function GET_OBJECT_NAME has out arguments
请帮助我解决这个问题.
Please help me to solve this problem.
推荐答案
这对我有用,感谢@home建议我提供良好的链接.
This works for me, thanks @home to suggesting me good link.
String call = "{ ? = call pkg_test1.get_object_type(?,?,?)}";
CallableStatement cstmt = con.dbstate().prepareCall(call);
cstmt.registerOutParameter(1, oracle.jdbc.OracleTypes.VARCHAR);
cstmt.setString(2, buffer);
cstmt.registerOutParameter(3, oracle.jdbc.OracleTypes.NUMBER);
cstmt.registerOutParameter(4, oracle.jdbc.OracleTypes.VARCHAR);
cstmt.executeQuery();
String type = cstmt.getString(1);
在这里很好的解释: 如何调用受约束的过程和函数
Well Explained Here : How to Call Strored Procedure and Function
这篇关于如何使用Java在Oracle数据库中调用IN和OUT参数的存储函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文