2011-12-08 21 views
0

Javaでコードを実行しようとしたときに、「スコープにエラーがありません」というエラーが発生しました。変数 'per'がXQueryのスコープにエラーがありません

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

+0

Javaコンテキストから$ perおよび$ jobをXQueryコンテキストに渡そうとしているような印象を受けています。外部として宣言し、何とかXQueryのJavaオブジェクトに渡すなど、もう少しやり直す必要があります。また、リテラルXMLをクエリに連結することもできます。 – grtjn

答えて

0

あなたはFN中につき$を参照します($ごと)、XMLパースが、あなたのコードはどこにその変数を定義していません。私は$ per1を見ますが、$ perはありません。あなたは$ jobと同じ問題に遭遇すると思います。

デバッグでは、Java文字列をエスケープしないでXQueryだけを表示できるようにxq文字列を表示してください。

関連する問題