Hi Brandon

A will do it soon (i.e in the next days)

ciao
Cesare



                                                                       
             "Brandon Goodin"                                          
             <[EMAIL PROTECTED]                                         
             mail.com>                                                 Per
                                       user-java@ibatis.apache.org     
             21/11/2006 15:36                                           CC
                                                                       
                                                                   Oggetto
                Per favore,            Re: static checking of the inline
               rispondere a            parameters                      
             [EMAIL PROTECTED]                                         
                apache.org                                             
                                                                       
                                                                       
                                                                       
                                                                       




that's not a bad idea. please add an issue to JIRA.
http://ibatis.apache.org/issuetracker.html

Brandon

On 11/21/06, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:


      > causes the following diagnostic
      >

      > --- The error occurred in
      it/finmatica/gpj/aa/frontebd/TipoRiga.xml.
      > --- The error occurred while executing update procedure.
      > --- Check the {? = call tipo_dato_riga.exists_id( ? ) }.
      > --- Check the output parameters (register output parameters
      failed).
      > --- Cause: java.sql.SQLException : Invalid column type
      > Caused by: java.sql.SQLException : Invalid column type
      > at
      com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(

      > GeneralStatement.java:91)

      [...]

      Well, I would spend a few words on the reason of the problem.
      I have a micro unit tester class whose purpose is only to load the
      sql-map-config.xml and the other "resource" SQL map XML files to
      check their correctness.
      If there is some error, iBatis raises its exception and the test
      fails. Success of the test means that the SQL maps are correct and
      can be loaded.
      That test worked fine with jdbcType=NUMBER.
      So, I guessed (wrongly) that the problem was elsewhere.

      To cut short: the diagnostic does not help.
      Which column has invalid type?
      What about a static type checking of the type conversion constants
      defined by java.sql.Types class and used in the inline parameters?
      It would be a good enhancement!


      Regards.


      Cesare


      Inactive hide details for "Jeff Butler" <[EMAIL PROTECTED]>"Jeff
      Butler" < [EMAIL PROTECTED]>

                                                                       
                         "Jeff Butler"                                 
                         <                                             
                         [EMAIL PROTECTED]                                 
                         mail.com>                                     
                                                                       Per
                                                                       
                         20/11/2006             [EMAIL PROTECTED]
                         17:24                  g                      
                                                                       
                                                                        CC
        Per favore, rispondere a                                       
      user-java@ibatis.apache.org                                      
                                                                   Oggetto
                                                                       
                                                Re: stored function:   
                                                NUMBER result, NUMBER IN
                                                parameter              
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       



      NUMBER is not a valid JDBC Type (it is Oracle specific). See here for
      the valid options:

      http://java.sun.com/j2se/1.4.2/docs/api/java/sql/Types.html


      Jeff Butler


      On 11/20/06, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:


                  The TIPO_DATO_RIGA package declares the following
                  overloaded versions of the exists_id() method in its
                  interface

                    function  exists_id
                   ( p_tipo_riga_ID  in number(10)
                   ) return  number;
                   pragma restrict_references ( exists_id, WNDS );

                    function  exists_id
                   ( p_tipo_dato_ID  in number(10)
                   , p_nome          in  varchar2(30)
                   ) return number;
                   pragma restrict_references( exists_id, WNDS  );


                  Here is the SQL map

                  <procedure id="esisteTipoRiga" parameterClass="
                  java.util.Map">
                  {#result
                  ,mode=OUT,javaType=java.lang.Integer,jdbcType=NUMBER# =
                  call tipo_dato_riga.exists_id( # pId
                  ,javaType=java.lang.Integer,jdbcType=NUMBER,mode=IN# ) }
                  </procedure>

                  and the Java code that calls it

                  SqlMapClient lSqlMapClient =
                  Configurazione.getSqlMapIstanza();

                     Integer lInteger;
                     HashMap< String, Integer > lHashMap = new HashMap<
                  String, Integer >();
                     lHashMap.put( "pId", new Integer( 1234 ) );

                         try
                         {
                         lSqlMapClient.update( "esisteTipoRiga", lHashMap
                  );
                         }
                         catch (SQLException pException)
                         {
                         pException.printStackTrace();
                         throw pException;
                         }
                     lInteger = lHashMap.get( "result" );
                        boolean lResult = lInteger.intValue() == 1;

                  causes the following diagnostic

                  --- The error occurred in
                  it/finmatica/gpj/aa/frontebd/TipoRiga.xml.
                  --- The error occurred while executing update procedure.

                  --- Check the {? = call tipo_dato_riga.exists_id( ? ) }.

                  --- Check the output parameters (register output
                  parameters failed).
                  --- Cause: java.sql.SQLException : Invalid column type
                  Caused by: java.sql.SQLException : Invalid column type
                  at
                  
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(
                   GeneralStatement.java:91)
                  at
                  com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update(
                   SqlMapExecutorDelegate.java:500)
                  at
                  com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(
                  SqlMapSessionImpl.java:85)

                  Please note that the following PL/SQL

                  declare
                  lId number;
                  lResult number ;
                  begin
                  lId := 1234 ;
                  lResult := tipo_dato_riga.exists_id( lId );
                  dbms_output.put_line( 'here we are...' );
                  dbms_output.put_line( 'lId = ' || lId || ', lResult = '
                  || lResult );
                  end;

                  works fine.
                  What's wrong in the SQL map / java code?
                  Any hint?
                  Is there any simpler approach on the Java side?

                  Thanks in advance



GIF image

GIF image

GIF image

GIF image

GIF image

GIF image

GIF image

GIF image

GIF image

GIF image

GIF image

GIF image

Reply via email to