Hi,

> I have this statement that throws an exception with this message : Unknown
> data type: "?, ?"

Yes, you need an explicit cast. Otherwise the statement can't be
prepared, because the data type of the parameters is unknown.

> I've seen in another post that a workaround is possible by putting
> values instead of ?, but this opens the door to sql injection.

The best solution is to use explicit CAST(? AS dataType).

> Perhaps inserting cast statements around some or all of the arguments, like
> when (cast ? as String) then  (cast ? as int) ... etc ?

Yes.

> case
>   when cast( ? as String) then  cast( ? as int)
>   when cast( ? as String) then  cast( ? as BigDecimal)
>   otherwise cast(? as float)
>
> will the result be a BigDecimal ?

The correct syntax is:

select id, case
  when 1 then cast(id as int)
  when 2 then cast(id as decimal)
  else cast(id as float) end from test;

and the result is double (float is equal to double in SQL, and double
is 'larger' than decimal because decimal doesn't support infinity and
NaN).

Regards,
Thomas

-- 
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/h2-database?hl=en.

Reply via email to