PL/SQL開発者から匿名ブロックを使用して呼び出すと完全に機能する次のPL/SQLブロックがあります。PLS-00103 "exit"の代わりに "exit"というシンボルが使用されました。続行する
ORA-06550::私は私のJavaアプリケーション(Webサービス)からそれを呼び出すたび
CREATE OR REPLACE FUNCTION getuserlist
RETURN SYS_REFCURSOR
IS userscursor SYS_REFCURSOR;
BEGIN
OPEN userscursor FOR
SELECT USER_ID
, USER_NAME
FROM TEST_USERS;
RETURN userscursor;
END;
はしかし、それは次のエラーをスローライン1、列28: PLS-00103: "記号が発生しました; "次のいずれかを期待する場合:
begin case declare end exception exit for goto if loop mod
null pragma raise return select update while with
<an identifier> <a double-quoted delimited-identifier>
<a bind variable> << continue close current delete fetch lock
insert open rollback savepoint set sql execute commit forall
merge pipe purge
The symbol "exit" was substituted for ";" to continue.
そして、ここでは私のJavaコードスニペットです:
String userListSQL = "{ ? = call GETUSERLIST(); }";
CallableStatement statement = conn.prepareCall(userListSQL);
statement.registerOutParameter(1, OracleTypes.CURSOR); //this is the line it throws an error
statement.execute();
resultSet = ((OracleCallableStatement)statement).getCursor(1);
任意の助け感謝を!
あなたのJavaコードでクエリを使用することができます場合は、ROWNUMを使用して、ページ分割のOracleクエリを使用して試してみて、クエリの数。私は、複雑なSQLクエリのためにストアドプロシージャを使用する方が好きです。 – cdaiga