【发布时间】:2013-09-21 10:26:34
【问题描述】:
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 包中声明的这两个函数获取信息
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
请帮我解决这个问题。
【问题讨论】:
-
调用存储过程和执行SQL不同,请看docs.oracle.com/javase/tutorial/jdbc/basics/…必须注册出params。
-
@home 但这不是程序,这是功能,据我所知,它们是不同的。
-
为什么要在函数中输出参数,我认为那是不好的风格。您应该使用存储过程。当你拥有所有 IN 参数时,函数通常是有意义的,然后函数对 IN 参数和返回值进行一些计算。
标签: java sql oracle function package