【发布时间】:2011-12-22 22:41:53
【问题描述】:
我正在针对 Oracle 10gR2 参数化一些 JDBC 查询。
大部分查询的格式如下:
String value = "somevalue";
String query = "select dbms_xmlgen.xmlget('select c1, c2 from t1 where c1 = ''"
+ somevalue + "'' ') xml from dual;";
我无法按原样对其进行参数化,因为实际选择位于 xmlget 内的带引号的字符串中,并且参数未在字符串内展开。 JDBC 会将该查询视为没有参数。
我在模仿dbms_xmlgen.xmlget 的行为方面相当成功:
String query = "SELECT xmltype.getclobval(sys_xmlagg(xmlelement(\"ROW\","
+ "xmlforest(c1, c2)))) xml from t1 where c1 = ?";
我无法解决的唯一问题是查询不返回任何行的情况。
使用dbms_xmlgen.xmlget,没有行会返回空的 CLOB。但是,对于 sys_xmlagg,没有行会导致 CLOB 包含:
<?xml version="1.0"?><ROWSET></ROWSET>
我正在寻找一种解决方案,它会给我一个空的 CLOB 而不是一个空的文档。
【问题讨论】: