0

尝试使简单的 Oracle 游标检索过程与 JDBC 一起工作时,我遇到了一些挫折。

我不断收到“[Oracle][ODBC][Ora]ORA-06553:PLS-306:调用'GETNAME'时参数的数量或类型错误”的错误,但我无法弄清楚我做错了什么。

这是我的Java代码:

CallableStatement stmt = connection.prepareCall("call getName(?)");
stmt.registerOutParameter(1, OracleTypes.CURSOR);
stmt.execute();

stmt.close();
con.close();

这是我在 Oracle 中的程序:

CREATE OR REPLACE PROCEDURE getName(cur out SYS_REFCURSOR)
IS
BEGIN
    OPEN cur FOR
        SELECT name FROM customer;
END;

错误发生在stmt.execute()

提前致谢。

顺便说一句,我正在使用 Oracle 10.2.0。

4

2 回答 2

2

我尝试了基本相同的事情,它对我有用。唯一的区别是我使用的 Oracle JDBC 库没有方法registerOutputParameter;我registerOutParameter改用了。也许您调用的是通用 JDBC 方法,而不是支持 Oracle 类型的特定于 Oracle 的方法。

我能想到的唯一其他解释是您的 Java 代码连接到错误的模式,并访问了不同的getName对象。

于 2010-05-26T19:14:01.537 回答
0

不,这是错误的。您不应该返回原始游标。您应该调用存储的过程并遍历 ResultSet。

于 2010-05-26T19:07:20.317 回答