Hello Fabio, apparantly the statement chokes the database kernel as it seems unable to guess what type the 1st parameter has. However, it should not react in the way you have experienced even if there may be no way for it to find out what type a parameter has.
A workaround would be placing a 'dummy' SUBSTR call into the decode, which convinces the kernel that the 1st parameter is a string: SELECT 1 FROM DUAL WHERE DECODE(SUBSTR(?, 1) '1', 'ONE', 'NOT_ONE') = 'ONE' AND ? = 'guest' at least seemed to work in my test. Thanks for reporting the issue, and sorry for any inconvenience caused. Alexander Schröder SAP DB, SAP Labs Berlin > -----Original Message----- > From: Fabio Pinotti [mailto:[EMAIL PROTECTED] > Sent: Thursday, June 10, 2004 11:19 AM > To: [EMAIL PROTECTED] > Subject: Passing parameters from java > > > Hi, > I have this simple piece of java code that gives me an > error (it is just a dummy slq expresson that include the > error I get on a more complex query...): > > String sqlString="Select 1 FROM DUAL WHERE > " DECODE(?,'1','ONE','NOT_ONE')='ONE'" + > " AND ?='guest'"; > > PreparedStatement st= cn.prepareStatement(sqlString); > st.setObject(1,"0"); > st.setObject(2,"guest"); > ResultSet rs=st.executeQuery(); > > The error is > > javax.servlet.ServletException: SAP DBTech JDBC: Parameter 1: > value too large. > > The connection seems to be valid, because I succesfully > execute other sql commands. > The strange thing is that the following statement, executed > with the same code above, runs succesfully > > String sqlString="Select 1 FROM DUAL WHERE " + > " ?='1'" + > " AND ?='guest'"; > > so it seems that the problem is raised by "decode".... > I tried to specify parameter types, or to use setString > instead of setObject, but nothing changes. > > > Thanks > > Fabio > -- MaxDB Discussion Mailing List For list archives: http://lists.mysql.com/maxdb To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]
