【问题标题】:Using Oracle ref cursor in Java without Oracle dependency在没有 Oracle 依赖关系的 Java 中使用 Oracle 引用游标
【发布时间】:2010-10-01 12:30:28
【问题描述】:

根据 google 和其他一些来源(例如,http://www.enterprisedt.com/publications/oracle/result_set.html),如果我想调用一个返回 ref 游标的存储函数,我需要编写类似这样的代码才能访问 ResultSet:

String query = "begin ? := sp_get_stocks(?); end;";
CallableStatement stmt = conn.prepareCall(query);
// register the type of the out param - an Oracle specific type
stmt.registerOutParameter(1, OracleTypes.CURSOR);
// set the in param
stmt.setFloat(2, price);
// execute and retrieve the result set
stmt.execute();
ResultSet rs = (ResultSet)stmt.getObject(1);

有没有办法在不引入对 Oracle 的编译时依赖的情况下做到这一点。是否有 OracleTypes.CURSOR 的通用替代方法?

【问题讨论】:

    标签: java oracle


    【解决方案1】:

    你试过java.sql.Types.OTHER吗?它可能会起作用。 API 说,它是针对数据库特定类型的。

    【讨论】:

    • 不幸的是它不起作用。尝试向 Types.OTHER 注册 out 参数时,CallableStatement 对象会引发 ora-17004 异常。
    【解决方案2】:

    常数OracleTypes.CURSOR 是-10。相当丑陋的解决方案,但您可以在那里写 -10 或创建自己的值为 -10 的常量。

    【讨论】:

    • 我同意它很丑,但我目前没有找到比这更好的东西
    • 这太丑了!如果这是一个大学项目本来可以的,但对于任何真正的项目,我求你不要使用它! :)
    猜你喜欢
    • 2012-06-11
    • 2016-12-19
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多