[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 メーリングリストの案内