我正在參數化針對Oracle 10gR2的一些JDBC查詢。嘗試用sys_xmlagg替換dbms_xmlgen.xmlget
大多數查詢的格式爲:
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而不是一個空文件。