gpt4 book ai didi

stored-procedures - 如何从 Java 中的 Oracle SP 返回 sys_refcursor?

转载 作者:行者123 更新时间:2023-12-04 00:45:22 25 4
gpt4 key购买 nike

我在 oracle 中有一个存储过程 (SP):

CREATE OR REPLACE 
PROCEDURE "SP_SEL_LOGIN_INFO" (
p_username IN varchar2,
p_ResultSet OUT sys_refcursor
) AS

begin

OPEN p_ResultSet FOR
SELECT * FROM user_accounts
WHERE p_username = username;

end;

在我的 java 类中,我有以下代码行来调用 SP:

currentCon = connectionpackage.ConnectionManager.getConnection(dbSource);
CallableStatement stmt = currentCon.prepareCall("{call SP_SEL_LOGIN_INFO(?, ?)}");
stmt.setString(1, username);
stmt.registerOutParameter(2, OracleTypes.CURSOR); //REF CURSOR
stmt.execute();
rs = stmt.getCursor(2);

这就是我在网上找到的调用 SP 并返回游标的方法。当我尝试编译时出现以下两个错误:

error: cannot find symbol stmt.registerOutParameter(2, OracleTypes.CURSOR); AND error: cannot find symbol rs = stmt.getCursor(2); 它在哪里说找不到 OracleTypes 和 getCursor。

我尝试导入 import oracle.jdbc.driver.*;import oracle.jdbc.*; 并得到错误 error: package oracle.jdbc不存在 import oracle.jdbc.driver.*;error: package oracle.jdbc does not exist import oracle.jdbc.*; 分别。

我还在适当的文件夹中有 ojdbc14.jar 文件,可以使用查询字符串进行连接。只是在尝试使用 SP 时它给我带来了麻烦。

SP 是我们当前 CF 网站上使用的一个,所以我想按原样重用它。有人可以阐明为什么这可能不起作用吗?或者是否有替代代码用于从 Oracle SP 返回游标?谢谢。

最佳答案

请试试这个,它可能会解决问题。

替换这个

rs = stmt.getCursor(2);

 rs = ((OracleCallableStatement)stmt).getCursor(2);

此外,对于调用过程,请使用以下语句。

CallableStatement stmt = conn.prepareCall("BEGIN SP_SEL_LOGIN_INFO(?, ?); END;");

关于stored-procedures - 如何从 Java 中的 Oracle SP 返回 sys_refcursor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11197674/

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