xqueryを使用している列に「一致」または「従業員でない」というメッセージを出力する必要があります。私は1つ、他の XMLQUERY doesntのトリガ内部のクエリXQueryメッセージを使用して既存の従業員を選択して確認する
SELECT
EXTRACTVALUE(B.JOBSHEET_DETAILS, '/jobSheet[@jobNo]/@jobNo') AS "JOB_DETAILS_ID",
XMLQUERY(' for $j in /jobSheet/employee[@empNo]/@empNo
let $msg := if ($j) then "Employee details match a current employee" else "Error in employee details (no match)"
where $j = 4444
return $msg
'
PASSING B.JOBSHEET_DETAILS
RETURNING CONTENT).getstringval() AS "CHECK_EMP_DETAILS" ,
EXTRACTVALUE(B.JOBSHEET_DETAILS, '/jobSheet/employee[@empNo]/@empNo') AS "EMP_NO",
EXTRACTVALUE(B.JOBSHEET_DETAILS, '/jobSheet/employee/empName') AS "EMP_NAME",
EXTRACTVALUE(B.JOBSHEET_DETAILS, '/jobSheet/dateAttend/date') AS "DATE_ATTENDED"
FROM JOBSHEET_XML_TAB B
where XMLEXISTS('/jobSheet/employee[@empNo]/@empNo' passing B.JOBSHEET_DETAILS);
内を反復処理する方法を知ってはいけない、今のプレースホルダとして4444を使用しています。エラーでなければならないときは(null)を出力します。
この回の反復で$ jは、既存の従業員であるかどうか、私はすべての従業員をチェックする必要があります。 $ j = 4444では、no = $ numのempから別のselect count(*)を実行することができます。
現在の出力と期待される出力を、画像ではなく書式付きのテキストとして表示してください。その出力を取得しようとしているXMLが含まれています。 –