XQuery中的变量'per'不在范围错误中

时间:2011-12-08 19:49:08

标签: xquery

当我尝试在Java中执行下面的代码时,每个'不在范围错误'错误中我得到'变量'。

  String xq = "declare variable $per1 as document-node(element(*, xs:untyped)) := " +
    "fn:parse-xml($per);" +
  "declare variable $job1 as document-node(element(*, xs:untyped)) := fn:parse-xml($job);" +
    "for $i in $per1//pimergednodes/Get__CompIntfc__CI_PERSONAL_DATAResponse,\n" + 
  "         $j in $job1//jobmergednodes/Get__CompIntfc__CI_JOB_DATAResponse[PROP_EMPLID = $i/PROP_EMPLID]\n" + 
  "\n" + 
  "     return\n" + 
  "        <emp>\n" + 
  "        {\n" + 
  "           $i/PROP_EMPLID,\n" + 
  "           $i/PROP_BIRTHDATE,\n" + 
  "           <coll_names>\n" + 
  "           {\n" + 
  "           $i/COLL_NAME_TYPE_VW/COLL_NAMES\n" + 
  "           }\n" + 
  "           </coll_names>,\n" + 
  "\n" + 
  "           $i/PROP_BIRTHDATE/COLL_NAME_TYPE_VW/PROP_FIRST_NAME,\n" + 
  "           $j/COLL_JOB/PROP_DEPTID\n" + 
  "\n" + 
  "           }\n" + 
  "        </emp>";

  XQDataSource xds = new oracle.xquery.xqj.OXQDataSource();
  XQConnection conn = xds.getConnection();
  XQPreparedExpression pEx = conn.prepareExpression(xq); ==> error raised in this call.

有人可以帮我解决这个错误。

先谢谢, Maviswa

1 个答案:

答案 0 :(得分:0)

您在fn:parse-xml($ per)中引用$ per,但您的代码并未在任何位置定义该变量。我看到$ per1,但没有$ per。我怀疑你会遇到与$ job相同的问题。

对于调试,打印出xq字符串,这样你就可以看到XQuery,而不会出现所有Java字符串转义,这只会增加很多噪音。