I suggest rewriting the statement so that there is only one binding argument. This approach is pretty ugly, but returns the result:
select max(col1)
, f_col2
from (
select col1
, f(? ,col2) as f_col2
from t
)
group
by f_col2
This rewritten statement refers to only one binding argument, so the DBMS now sees the expressions in the GROUP BY clause and the SELECT list is identical.
NTN
[EDIT]
( , , named bind, Oracle. Perl DBI , Oracle.)
, . (-, .) , , .
, : () ( ), () bind.
GROUP BY SELECT. , , , . ( , , , , , .)
, . , ( ), .
[/EDIT]
, , , . , ( , , . , , , ..)
EDIT ( )
. , , , . , t. , ; , Oracle. ( ) , . TO_NUMBER(?) AS param, TO_DATE(?,'...') AS param, TO_CHAR(?) AS param, , .)
MySQL. (MySQL- ). , hughjass, . , MySQL, , , , sql_mode ONLY_FULL_GROUP_BY. MySQL FROM DUAL)
SELECT MAX(t.col1)
, f( v.param ,t.col2)
FROM t
CROSS
JOIN ( SELECT ? AS param FROM DUAL) v
GROUP
BY f( v.param ,t.col2)
MadusankaD Oracle JDBC . ( , , .)