Oracle Report Builder - String index out of range Problem   Aug 2, 2009

 

select * from my_table

"where (col_id = :col_id or :col_id is null)"


Note:  :col_id is a parameter


the following repotr parameters are passed through the URL:

"report=report_name.rdf&DESFORMAT=PDF&DESTYPE=CACHE&userid=scott/tiger@orcl&paramform=yes"


The problem occurs when the user enters nothing in the :col_id field in the parameter form and clicks submit, knowing that the report
is run correctly locally from the report builder using the same
scenario.

java.lang.StringIndexOutOfBoundsException: String index out of range: 12 at java.lang.String.charAt(String.java:444) at
oracle.reports.rwclient.URLParser.parseQueryString(URLParser.java:182) at
oracle.reports.rwclient.URLParser.parseQueryString(URLParser.java:78) at
oracle.reports.rwclient.RWClient.processRequest(RWClient.java:1382) at
oracle.reports.rwclient.RWClient.doPost(RWClient.java:504) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:760) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at
com.evermind[Oracle Application Server Containers for J2EE 10g
(10.1.2.2.0)].server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:
65) at oracle.security.jazn.oc4j.JAZNFilter.doFilter(Unknown Source) at
com.evermind[Oracle Application Server Containers for J2EE 10g
(10.1.2.2.0)].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatch
er.java:673) at com.evermind[Oracle Application Server Containers for J2EE 10g
(10.1.2.2.0)].server.http.ServletRequestDispatcher.forwardInternal(ServletReques
tDispatcher.java:340) at com.evermind[Oracle Application Server Containers for
J2EE 10g
(10.1.2.2.0)].server.http.HttpRequestHandler.processRequest(HttpRequestHandler.j
ava:830) at com.evermind[Oracle Application Server Containers for J2EE 10g
(10.1.2.2.0)].server.http.AJPRequestHandler.run(AJPRequestHandler.java:228) at
com.evermind[Oracle Application Server Containers for J2EE 10g
(10.1.2.2.0)].server.http.AJPRequestHandler.run(AJPRequestHandler.java:133) at
com.evermind[Oracle Application Server Containers for J2EE 10g
(10.1.2.2.0)].util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResou
rcePooledExecutor.java:192) at java.lang.Thread.run(Thread.java:534)
 

The problem disappeared when we changed the parameter name to :P_col_id.

It seems that the error is generated when a parameter name matches a table column name.

The error appears when you run the report in Web via the application server, but is not generated when run in client