Home
Deprecated DBMS_XMLSTORE package should not be used
Description
Oracle Database 23ai marks DBMS_XMLSTORE as deprecated. This proprietary package inserts, updates, or deletes table rows by parsing XML payloads (insertXML, updateXML, deleteXML). Oracle recommends replacing these calls with standard SQL/XQuery or SQL/XML operators (XMLTABLE, XMLQUERY, XMLSERIALIZE) for portable, optimizer-visible code.
Key Benefits
- Future-proof: Eliminates dependencies that may be desupported in the next major release.
- Performance: Set-based SQL/XML typically outperforms PL/SQL DOM parsing.
- Standards Compliance: ANSI SQL/XML works in all modern Oracle editions and most other RDBMS engines.
Non-compliant Code Example
DECLARE ctx DBMS_XMLSTORE.ctxType; --Non compliant code rowsnum NUMBER; xmlDoc CLOB := ''; BEGIN ctx := DBMS_XMLSTORE.newContext('EMP'); --Non compliant code rowsnum := DBMS_XMLSTORE.insertXML(ctx, xmlDoc); --Non compliant code DBMS_XMLSTORE.closeContext(ctx); --Non compliant code END; |
7788 SCOTT 1000
Compliant Code Example
INSERT INTO emp (empno, ename, sal)
SELECT x.empno, x.ename, x.sal
FROM XMLTABLE(
'/ROWSET/ROW'
PASSING XMLTYPE(
'7788 SCOTT 1000 |
')
COLUMNS
empno NUMBER PATH 'EMPNO',
ename VARCHAR2(20) PATH 'ENAME',
sal NUMBER PATH 'SAL'
) x; --Compliant code
