gpt4 book ai didi

java - 如何处理 callableStatement.registerOutParameter(1, java.sql.Types.BOOLEAN);

转载 作者:太空宇宙 更新时间:2023-11-04 07:21:39 31 4
gpt4 key购买 nike

在 Oracle 10g/11g 中有一个存储过程,如下所示:

CREATE OR REPLACE 
PROCEDURE SP_SOME_PROC ( PRM_ID IN NUMBER , START_DATE IN DATE, RESULT OUT BOOLEAN)
is...

使用以下代码来调用它并获取结果:

String sql = "{call SP_SOME_PROC(?,?,?) }";

callableStatement = conn.prepareCall(sql);
callableStatement.setLong(1, theid);
callableStatement.setDate(2, new java.sql.Date(startDate.getTime()));
callableStatement.registerOutParameter(3, java.sql.Types.BOOLEAN);

callableStatement.executeUpdate();

Boolean result = callableStatement.getBoolean(3);

但是,上面的代码会产生如下所示的异常

[10/8/13 2:28:24:736 EEST] 0000009a SystemErr     R java.sql.SQLException: Invalid column type: 16
[10/8/13 2:28:24:737 EEST] 0000009a SystemErr R at oracle.jdbc.driver.OracleStatement.getInternalType(OracleStatement.java:3950)
[10/8/13 2:28:24:737 EEST] 0000009a SystemErr R at oracle.jdbc.driver.OracleCallableStatement.registerOutParameterInternal(OracleCallableStatement.java:135)
[10/8/13 2:28:24:737 EEST] 0000009a SystemErr R at oracle.jdbc.driver.OracleCallableStatement.registerOutParameter(OracleCallableStatement.java:304)
[10/8/13 2:28:24:737 EEST] 0000009a SystemErr R at oracle.jdbc.driver.OracleCallableStatement.registerOutParameter(OracleCallableStatement.java:393)
[10/8/13 2:28:24:737 EEST] 0000009a SystemErr R at oracle.jdbc.driver.OracleCallableStatementWrapper.registerOutParameter(OracleCallableStatementWrapper.java:1569)

我尝试了其他组合,例如

String sql = "{? = call SP_SOME_PROC(?,?) }";
callableStatement = conn.prepareCall(sql);
callableStatement.registerOutParameter(1, OracleTypes.BOOLEAN);

但运气不好!

最佳答案

虽然 Oracle 具有可在存储过程中使用的 boolean 类型,但它没有可通过 JDBC 接口(interface)发送的 boolean 列类型。您将必须进行一些阻抗匹配(即返回 int 0 和 1 或 char 'T' 和 'F')。

这种 boolean 列类型的缺失是 ANSI 的遗留问题,这是 Oracle 论坛上许多哀嚎和咬牙切齿的根源(在 AskTom 上查找“boolean ”)。

关于java - 如何处理 callableStatement.registerOutParameter(1, java.sql.Types.BOOLEAN);,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19236673/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com