【发布时间】:2012-06-25 21:33:11
【问题描述】:
我在 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 does not exist import oracle.jdbc.driver.*; 和error: package oracle.jdbc does not exist import oracle.jdbc.*;。
我在正确的文件夹中也有 ojdbc14.jar 文件,并且可以使用查询字符串进行连接。只是在尝试使用 SP 时给我带来了麻烦。
SP 是我们在当前 CF 网站上使用的一个,所以我想按原样重复使用它。有人可以解释一下为什么这可能行不通吗?或者是否有其他代码可用于从 Oracle SP 返回游标?谢谢。
【问题讨论】:
标签: stored-procedures jdbc oracle-cursor