[Seasar-user:12580] 【S2Dao】ファンクションでのカーソルについて
[E-MAIL ADDRESS DELETED]
[E-MAIL ADDRESS DELETED]
2008年 1月 21日 (月) 14:03:49 JST
はじめまして。前田といいます。
S2Daoの調査を行っていて、ファンクションの呼び出しで問題が発生しています。
現象
・ファンクションでカーソルを使用すると例外が発生する
・カーソルを使用しない場合は、問題なく実行可能
環境
・S2Dao 1.0.47
・S2Container 2.4.20
・Oracle 10.1
ファンクションの定義
CREATE OR REPLACE function SCOTT.test_return return curs_types.EmpCurType
IS
curs1 curs_types.EmpCurType;
BEGIN
OPEN curs1
FOR SELECT EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO FROM emp;
return curs1;
END test_return;
例外の内容
Exception in thread "main" org.seasar.framework.exception.SQLRuntimeException: [ESSR0072]SQLで例外(SQL=[], Message=[ORA-06550: line 1, column 13:
PLS-00382: expression is of wrong type
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
], ErrorCode=6550, SQLState=65000)が発生しました
at org.seasar.dao.handler.ArgumentDtoProcedureHandler.execute(ArgumentDtoProcedureHandler.java:102)
at org.seasar.extension.jdbc.impl.BasicSelectHandler.execute(BasicSelectHandler.java:184)
at org.seasar.extension.jdbc.impl.BasicSelectHandler.execute(BasicSelectHandler.java:177)
at org.seasar.dao.impl.ArgumentDtoProcedureCommand.execute(ArgumentDtoProcedureCommand.java:81)
at org.seasar.dao.interceptors.S2DaoInterceptor.invoke(S2DaoInterceptor.java:53)
at org.seasar.dao.pager.PagerS2DaoInterceptorWrapper.invoke(PagerS2DaoInterceptorWrapper.java:71)
・・・・
Caused by: java.sql.SQLException: ORA-06550: line 1, column 13:
PLS-00382: expression is of wrong type
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:305)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:272)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:623)
at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:180)
at oracle.jdbc.driver.T4CCallableStatement.execute_for_rows(T4CCallableStatement.java:783)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1028)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:2888)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:2979)
at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4103)
at org.seasar.dao.handler.ArgumentDtoProcedureHandler.execute(ArgumentDtoProcedureHandler.java:96)
... 8 more
Oracleのカーソルを戻すことはできないのでしょうか?よろしくお願いします。
Seasar-user メーリングリストの案内