제 질문은 Oracle11g에서 Xquery를 사용하여 text() 함수를 사용하여 XML 노드를 삭제하는 방법입니다. ,XQUERY를 사용하여 Oracle 11g에서 XML 노드 by text()를 삭제하는 방법은 무엇입니까?
UPDATE GROUPS SET USERS =
DELETEXML(USERS,'/users/user[text()="user1"]')
WHERE ID = 'clients';
그러나 이후 릴리스에서 더 이상 사용되지 않습니다 공식 문서 DELETEXML에 따라 :
<users>
<user>user1</user>
<user>user2</user>
</users>
나는 다음과 같은 방법으로 DELETEXML를 사용하여했을 : 여기 내 XML 컬럼 (사용자) 구조 그래서이 쿼리를 XMLQUERY로 변환하려고합니다. 내가 연구했지만이 문제에 대한 해결책을 발견하지 않았습니다
Error report -
SQL Error: ORA-19112: error raised during evaluation: XQuery Update connot be compiled
19112. 00000 - "error raised during evaluation: %s"
*Cause: The error function was called during evaluation of the XQuery expression.
*Action: Check the detailed error message for the possible causes.
: https://docs.oracle.com/database/121/ADXDB/app_depr_upd.htm#ADXDB6044
UPDATE GROUPS SET USERS =
XMLQuery('copy $tmp := . modify delete node
$tmp/users/user[text()="user1"] return $tmp'
PASSING USERS RETURNING CONTENT)
WHERE ID = 'clients';
나는 다음과 같은 오류가 발생합니다. 노드의 속성 [@attribute = "something"] 또는 텍스트의 위치가 아닌 [1] 노드를 삭제할 수 있습니다.
도움이 필요합니다. 감사.
작업을해야 당신이 기대하는 결과를 반환합니다. 어쨌든 Oracle 11g의 정확한 버전을 사용하고 있습니까? Oracle 11g는 처음부터 XQuery Update를 지원하지 않았습니다. –
Oracle Database 11g Express Edition 릴리즈 11.2.0.2.0을 사용하고 있습니다. – danieca20