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を呼び出してカーソルを返すためにオンラインで見つけたものです。コンパイルしようとすると、次の2つのエラーが発生します。
error: cannot find symbol stmt.registerOutParameter(2, OracleTypes.CURSOR);
ANDOracleTypeserror: cannot find symbol rs = stmt.getCursor(2);
と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は現在のCFWebサイトで使用しているものなので、そのまま再利用したいと思います。誰かがこれがうまくいかない理由に光を当てていただけませんか?または、Oracle SPからカーソルを返すために使用する代替コードがある場合はどうなりますか?ありがとう。