我正在针对 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 而不是一个空的文档。