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 を提供するソリューションを探しています。