java - 如何使用Java调用Oracle数据库中IN和OUT参数的存储函数

标签 java sql oracle function package

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

请帮我解决这个问题。

最佳答案

试试这个

    CallableStatement c = conn.prepareCall("{? = call get_object_type(?, ?)}");
    c.registerOutParameter(1, Types.VARCHAR);
    c.registerOutParameter(3, Types.VARCHAR);
    c.setString(2, buffer);
    c.execute();
    String res = c.getString(1);
    String err = c.getString(3);

关于java - 如何使用Java调用Oracle数据库中IN和OUT参数的存储函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18842115/

相关文章:

java - 删除所有行然后重新加载 JTable 中的行会导致 getSelectedRow 返回 -1

具有逗号分隔值的两组的Mysql交集

mysql - SQL : ids containing specific arrays in a specific way

Oracle 11.1 将儒略日数转换为 DATE 或 TIMESTAMP 时出现错误

java - 如何在 Android 中转到下一个 Activity

javax.xml.绑定(bind).JAXBException : class <ClassName> nor any of its super class is known to this context

java - 我的手电筒应用程序出现错误

php - MYSQL 从同一列和表中选择多行

java - SQL 命令未正确结束

sql - 在 where 子句中使用计算字段