Hi Brandon
A will do it soon (i.e in the next days)
ciao
Cesare
"Brandon Goodin"
<[EMAIL PROTECTED]
mail.com> Per
[email protected]
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
[email protected]
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











