Hi,

It should be possible to call a function within a DB package.
The error doesn't seem to be related to iBatis.
Can you successfully execute the SQL statement from a DB client?
If yes, there may be a problem with the configuration of your JDBC connection.

Greetings,
Hans.

Murray, AlanM wrote:
Hi,
Can the IBatis Procedure call invoke a function within a Package on a DB ?  Im 
attempting to invoke a function which exists on a remote DB using the IBatis 
procedure call.  Looked around the net for examples of the IBatis procedure 
call which returns a resultmap but could nt find any clear solution.
I 've tried executing the following code in my sqlMap.xml :

<sqlMap namespace="ie.gov.agriculture.sps.app.dao.impl.IForisSQLMapDAO">

        <typeAlias alias="IForisData" 
type="ie.gov.agriculture.sps.app.dao.data.IForisData"/>
        
        <resultMap class="IForisData" id="iForisResultByParcelID">
                <result property="exists" column="ExistInIforis" nullValue=" " 
/>
            <result property="plantingDate" column="PlantingDate" nullValue=" " 
/>
            <result property="herdNum" column="HerdNum" nullValue=" " />
            <result property="contractNum" column="ContractId" nullValue=" " />
            <result property="dualClaim" column="DualClaim" nullValue=" " />    
    
            <result property="dualClaimType" column="DualClaimType" nullValue="0" 
/>
        </resultMap>      
        
        <parameterMap id="iForisResultByParcelIDParams" class="map">
                <parameter property="landUnitUniqueId" jdbcType="VARCHAR2" 
javaType="java.lang.String" mode="IN"/>
                <!--<parameter property="result" jdbcType="ORACLECURSOR" 
mode="OUT"/>-->
        </parameterMap>

        <procedure id="findIForisClaims" parameterMap="iForisResultByParcelIDParams" 
resultMap="iForisResultByParcelID">
         { call PKCO_IF_DUAL_CLAIMS.DUAL_CLAIM_QUERY(?) }
        </procedure>      
        

</sqlMap>

This gives the following error :

06/05/31 16:11:02 ie.gov.agriculture.sps.global.exceptions.SPSBusinessException: com.ibatis.dao.client.DaoException: Failed to queryForList - id [ie.gov.agriculture.sps.app.dao.impl.IForisSQLMapDAO.findIForisClaims], parameterObject [{landUnitUniqueId=15020597}]. Cause: com.ibatis.common.jdbc.exception.NestedSQLException: --- The error occurred in ie/gov/agriculture/sps/app/dao/xml/IForisData.xml. --- The error occurred while applying a parameter map. --- Check the ie.gov.agriculture.sps.app.dao.impl.IForisSQLMapDAO.iForisResultByParcelIDParams. --- Check the statement (update procedure failed). --- Cause: java.sql.SQLException: ORA-06550: line 1, column 7:
PLS-00221: 'DUAL_CLAIM_QUERY' is not a procedure or is undefined
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

Does this error mean that i can not invoke a function on the remote DB using the keyword procedure ?and do I just have to setup a procedure on the DB ? Or is it possible to do use an alternative keyword call in IBatis, i know its possible to define parameters of mode "Out" ? but i was hoping to return a result map. Any help on any of the above would be great.

Thanks,
Al.


Reply via email to