You misread Brad's comment, i think.

You have this:
<procedure id="elions.bas.procCounter" parameterClass="hashMap">

You need to have this:
<procedure id="elions.bas.procCounter"
parameterMap="elions.bas.procCounter.param">

..which may still not work because of the "." characters in the name.

Larry


On 2/21/07, Yusuf <[EMAIL PROTECTED]> wrote:
Hi, thanks for the feedback...

Brad, Actually I forgot to mention that I have this entry in the sqlmap,
so I was referring to a class, not a parameterMap:

<typeAlias alias="hashMap" type="java.util.HashMap"/>

Jeff, using parameterMap and # syntax ran successfully, it just won't
return the value in the v_result OUT parameter..
I also have tried changing to question marks (?) like this :

<procedure id="elions.bas.procCounter" parameterClass="hashMap">
{call EKA.SISTEM_KONTROL_SPAJ.GENERATE_COUNTER (?,?,?,?,?,?)}
</procedure>

but an Invalid Column Type Exception occured...

Actually I found another solution that worked, which is to convert the
stored procedure to a stored function, and remove the OUT parameter :

FUNCTION generate_counter (
      v_msco_number    IN       NUMBER,
      v_lca_id         IN       VARCHAR2,
      v_prefix         IN       VARCHAR2,
      v_suffix         IN       VARCHAR2,
      v_total_length   IN       NUMBER
) RETURN VARCHAR2;

and then call it using standard select :

<select parameterClass="hashMap" resultClass="string">
select EKA.SISTEM_KONTROL_SPAJ.generate_counter(#msco_number:number#,
#lca_id:varchar#, #prefix:varchar#, #suffix:varchar#, #length:number)
from dual
</select>

but I'm still curious how to make this work... are there any other
suggestions?

thanks & best regards,
yusuf

-----Original Message-----
From: Jeff Butler [mailto:[EMAIL PROTECTED]
Sent: Wednesday, February 21, 2007 7:56 PM
To: user-java@ibatis.apache.org
Subject: Re: Just Another Stored Procedure Question


Yes, also...

- If you use a parameterMap, then use question marks as parameter
markers
- Else use parameterClass and the # syntax

You can't use both.

Jeff Butler


On 2/21/07, Brad Handy < [EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]> > wrote:

It seems to me this configuration is the problem:

<procedure id="elions.bas.procCounter " parameterClass="hashMap">
       {
        call EKA.SISTEM_KONTROL_SPAJ.GENERATE_COUNTER (
                 #hasil:varchar#,#msco_number:number#, #lca_id:varchar#,
#prefix:varchar#,

                 #suffix:varchar#, #length:number#)
       }
</procedure>

You're using the "parameterClass " attribute and trying to reference a
"parameterMap".  Change the name of the attribute in your <procedure>
tag.


I'm still just a noob, but that seems like it could be a problem, if not
the problem.



Brad




On 2/21/07, Yusuf < [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> >
wrote:

Hi,
Really2 sorry for asking, i know this has been asked before many times,
i have browsed through the docs, the faqs page, and the mailing lists,
but i can't seem to make this work (oracle):

oracle procedure :

PROCEDURE generate_counter (
        v_result         OUT      VARCHAR2,
      v_msco_number    IN       NUMBER,
      v_lca_id         IN       VARCHAR2,
      v_prefix         IN       VARCHAR2,
      v_suffix         IN       VARCHAR2,
      v_total_length   IN       NUMBER
);

in sqlmap :

<parameterMap id="elions.bas.procCounter.param" class="hashMap">
        <parameter property="hasil" jdbcType="varchar" javaType="string"

mode="OUT"/>
        <parameter property="msco_number" jdbcType="number"
javaType="int" mode="IN"/>
        <parameter property="lca_id" jdbcType="varchar"
javaType="string" mode="IN"/>
        <parameter property="prefix" jdbcType="varchar"
javaType="string" mode="IN"/>
        <parameter property="suffix" jdbcType="varchar"
javaType="string" mode="IN"/>
        <parameter property="length" jdbcType="number" javaType="int"
mode="IN"/>
</parameterMap>

<procedure id="elions.bas.procCounter" parameterClass="hashMap">
{call EKA.SISTEM_KONTROL_SPAJ.GENERATE_COUNTER (#hasil:varchar#,
#msco_number:number#, #lca_id:varchar#, #prefix:varchar#,
#suffix:varchar#, #length:number#)}
</procedure>

in spring dao :

public String selectCounter(int msco_number, String lca_id, String
prefix, String suffix, int total_length) {
        Map map = new HashMap();
        String hasil = "";
        map.put("hasil", hasil);
        map.put("msco_number", msco_number);
        map.put("lca_id", lca_id);
        map.put("prefix", prefix);
        map.put("suffix", suffix);
        map.put("length", total_length);
        String result = (String)
getSqlMapClientTemplate().queryForObject(" elions.bas.procCounter", map
);
        System.out.println("RESULT = " + result);
        System.out.println("HASIL = " + hasil);
        return hasil;
        }

both the String result and hasil contains nothing... can someone help
me? thanks







Reply via email to