You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-java@ibatis.apache.org by Brad Balmer <bb...@peapod.com> on 2006/08/22 17:53:20 UTC

Call Stored Procedure Returning Multiple Values

I'm getting the following error:
Function doesn't have an output parameter or the out parameter isn't
returned.

How can I map multiple Strings coming back from a stord procedure?

<code>
    public String[] selectTargetMessages(String pnOrdId) {
        Map values = new HashMap(3);
        values.put("ordId", pnOrdId);

getSqlMapClientTemplate().queryForObject("customer.selectTargetMessages",
values);
        String lsFirst = (String)values.get("first");
        String lsSecond = (String)values.get("second");
        String[] loResult = new String[2];
        loResult[0] = lsFirst;
        loResult[1] = lsSecond;
        return(loResult);
    }

    <parameterMap id="targetMessageParameters" class="java.util.HashMap" >
          <parameter property="first" jdbcType="VARCHAR"
javaType="java.lang.String" mode="OUT"/>
          <parameter property="second" jdbcType="VARCHAR"
javaType="java.lang.String" mode="OUT"/>
          <parameter property="ordId" jdbcType="VARCHAR"
javaType="java.lang.String" mode="IN"/>
    </parameterMap>

    <procedure id="selectTargetMessages"
parameterMap="targetMessageParameters" remapResults="true">
          {call pip_invc_msg_targ_chk (?)}
    </procedure>

</code>

___________________________
Brad Balmer
Application Architect
Peapod, Inc.
847-583-6306

This email may contain confidential or legally privileged information 
that is intended only for the individual or entity named as the 
recipient. If you are not the intended recipient, you are hereby 
notified that any disclosure, copying, distribution, or reliance upon 
the contents of this email is strictly prohibited. If you have received 
this email in error, please contact the sender so that proper delivery 
can be arranged, and then please delete this message. Thank you.




Re: Call Stored Procedure Returning Multiple Values

Posted by Jeff Butler <je...@gmail.com>.
Ahh - the SP must return a result set.  One input parameter, no output
parameters.  So set up a result map in iBATIS, then call it with
queryForList().

Jeff Butler


On 8/22/06, Brad Balmer <bb...@peapod.com> wrote:
>
>  Thanks.
>
> Right before I received this I was told that I needed to call this SP just
> like calling any normal SQL select statement.  Now I've got to figure out
> how to do that.
>
>
> Jeff Butler wrote:
>
> If the procedure has three parameters (one in, two out), then you need to
> call the procedure like this:
>
>  <procedure id="selectTargetMessages"
> parameterMap="targetMessageParameters" remapResults="true">
>          {*call pip_invc_msg_targ_chk (?,?,?)*}
>    </procedure>
>
> Jeff Butler
>
>
> On 8/22/06, Brad Balmer <bb...@peapod.com> wrote:
> >
> > I'm getting the following error:
> > Function doesn't have an output parameter or the out parameter isn't
> > returned.
> >
> > How can I map multiple Strings coming back from a stord procedure?
> >
> > <code>
> >    public String[] selectTargetMessages(String pnOrdId) {
> >        Map values = new HashMap(3);
> >        values.put ("ordId", pnOrdId);
> >
> > getSqlMapClientTemplate().queryForObject("customer.selectTargetMessages
> > ",
> > values);
> >        String lsFirst = (String)values.get("first");
> >        String lsSecond = (String)values.get("second");
> >        String[] loResult = new String[2];
> >        loResult[0] = lsFirst;
> >        loResult[1] = lsSecond;
> >        return(loResult);
> >    }
> >
> >    <parameterMap id="targetMessageParameters" class=" java.util.HashMap"
> > >
> >          <parameter property="first" jdbcType="VARCHAR"
> > javaType="java.lang.String" mode="OUT"/>
> >          <parameter property="second" jdbcType="VARCHAR"
> > javaType="java.lang.String" mode="OUT"/>
> >          <parameter property="ordId" jdbcType="VARCHAR"
> > javaType="java.lang.String" mode="IN"/>
> >    </parameterMap>
> >
> >    <procedure id="selectTargetMessages"
> > parameterMap="targetMessageParameters" remapResults="true">
> >          {call pip_invc_msg_targ_chk (?)}
> >    </procedure>
> >
> > </code>
> >
> > ___________________________
> > Brad Balmer
> > Application Architect
> > Peapod, Inc.
> > 847-583-6306
> >
> > This email may contain confidential or legally privileged information
> > that is intended only for the individual or entity named as the
> > recipient. If you are not the intended recipient, you are hereby
> > notified that any disclosure, copying, distribution, or reliance upon
> > the contents of this email is strictly prohibited. If you have received
> > this email in error, please contact the sender so that proper delivery
> > can be arranged, and then please delete this message. Thank you.
> >
> >
> >
> >
>
> --
>
> ___________________________
> Brad Balmer
> Application Architect
> Peapod, Inc.
> 847-583-6306
>
> This email may contain confidential or legally privileged information that is intended only for the individual or entity named as the recipient. If you are not the intended recipient, you are hereby notified that any disclosure, copying, distribution, or reliance upon the contents of this email is strictly prohibited. If you have received this email in error, please contact the sender so that proper delivery can be arranged, and then please delete this message. Thank you.
>
>

Re: Call Stored Procedure Returning Multiple Values

Posted by Jeff Butler <je...@gmail.com>.
If the procedure has three parameters (one in, two out), then you need to
call the procedure like this:

 <procedure id="selectTargetMessages"
parameterMap="targetMessageParameters" remapResults="true">
         {*call pip_invc_msg_targ_chk (?,?,?)*}
   </procedure>

Jeff Butler


On 8/22/06, Brad Balmer <bb...@peapod.com> wrote:
>
> I'm getting the following error:
> Function doesn't have an output parameter or the out parameter isn't
> returned.
>
> How can I map multiple Strings coming back from a stord procedure?
>
> <code>
>    public String[] selectTargetMessages(String pnOrdId) {
>        Map values = new HashMap(3);
>        values.put("ordId", pnOrdId);
>
> getSqlMapClientTemplate().queryForObject("customer.selectTargetMessages",
> values);
>        String lsFirst = (String)values.get("first");
>        String lsSecond = (String)values.get("second");
>        String[] loResult = new String[2];
>        loResult[0] = lsFirst;
>        loResult[1] = lsSecond;
>        return(loResult);
>    }
>
>    <parameterMap id="targetMessageParameters" class="java.util.HashMap" >
>          <parameter property="first" jdbcType="VARCHAR"
> javaType="java.lang.String" mode="OUT"/>
>          <parameter property="second" jdbcType="VARCHAR"
> javaType="java.lang.String" mode="OUT"/>
>          <parameter property="ordId" jdbcType="VARCHAR"
> javaType="java.lang.String" mode="IN"/>
>    </parameterMap>
>
>    <procedure id="selectTargetMessages"
> parameterMap="targetMessageParameters" remapResults="true">
>          {call pip_invc_msg_targ_chk (?)}
>    </procedure>
>
> </code>
>
> ___________________________
> Brad Balmer
> Application Architect
> Peapod, Inc.
> 847-583-6306
>
> This email may contain confidential or legally privileged information
> that is intended only for the individual or entity named as the
> recipient. If you are not the intended recipient, you are hereby
> notified that any disclosure, copying, distribution, or reliance upon
> the contents of this email is strictly prohibited. If you have received
> this email in error, please contact the sender so that proper delivery
> can be arranged, and then please delete this message. Thank you.
>
>
>
>