Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.server -> Problem with Oracle XML database - verification of problem
Would it be possible for someone to execute the script below and
confirm the observed behaviour. When I attempt to perform this
operation I see
<snip>
SQL> SQL> SQL> INSERT INTO tblEmployeeDetails(ID,EmployeeDetail) 2 VALUES(101,XMLTYPE('<?xml version="1.0"?> 3 <EmployeeDetail xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4
5 > 6 <EmployeeID>100</EmployeeID> 7 <EmployeeName>test string</EmployeeName> 8 </EmployeeDetail> 9 ') 10 ); INSERT INTO tblEmployeeDetails(ID,EmployeeDetail) *
SQL> SQL> SQL>
The full session transcript of what is seen, including Oracle version
number etc, follows the source which I've included immediately below
(to enable copy/pasting for easy testing). I've executed the same
script on a couple of Oracle XMLDB 9.2 databases under Win2K and see
the same thing. There's a problem but I don't know what it is or how
to get around it.
Thank you
George
CONN SYSTEM/PASSWORD_at_DBXMLTEST
SELECT * FROM V$VERSION;
DROP USER "GEORGE" CASCADE;
CREATE USER "GEORGE" PROFILE "DEFAULT"
IDENTIFIED BY "GEORGE" DEFAULT TABLESPACE "USERS" ACCOUNT UNLOCK;
GRANT "CONNECT" TO "GEORGE";
GRANT CREATE ANY DIRECTORY TO "GEORGE";
GRANT CREATE PROCEDURE TO "GEORGE";
GRANT QUERY REWRITE TO "GEORGE";
GRANT CREATE TYPE TO "GEORGE";
GRANT CREATE TABLE TO "GEORGE";
GRANT CREATE TRIGGER TO "GEORGE";
ALTER USER "GEORGE" QUOTA 10M ON "USERS";
CONN GEORGE/GEORGE_at_DBXMLTEST
DECLARE
xsd VARCHAR2(4000) := '<schema
targetNamespace="http://www.companyname.com/EmployeeDetails"
xmlns="http://www.w3.org/2001/XMLSchema"
>
<element name="EmployeeDetail"> <complexType> <sequence> <element name="EmployeeID" type="integer"/> <element name="EmployeeName" type="string"/> </sequence> </complexType> </element> </schema>';
CREATE TABLE tblEmployeeDetails(ID NUMBER PRIMARY KEY,
EmployeeDetail XMLTYPE ) XMLTYPE COLUMN EmployeeDetail ELEMENT"http://www.companyname.com/EmployeeDetails#EmployeeDetail";
CREATE OR REPLACE TRIGGER trgBeforeUpdateEmployeeDetails
BEFORE INSERT ON tblEmployeeDetails
FOR EACH ROW
BEGIN
:NEW.EmployeeDetail.SCHEMAVALIDATE();
END;
/
INSERT INTO tblEmployeeDetails(ID,EmployeeDetail) VALUES(101,XMLTYPE('<?xml version="1.0"?>
<EmployeeDetail xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.companyname.com/EmployeeDetails" > <EmployeeID>100</EmployeeID> <EmployeeName>test string</EmployeeName> </EmployeeDetail> ') ); ==========================================Transcript/what I see below.
SQL>
SQL> CONN SYSTEM/PASSWORD_at_DBXMLTEST
Connected.
SQL>
SQL> SELECT * FROM V$VERSION;
BANNER
SQL>
SQL> DROP USER "GEORGE" CASCADE;
User dropped.
SQL> CREATE USER "GEORGE" PROFILE "DEFAULT" 2 IDENTIFIED BY "GEORGE" DEFAULT TABLESPACE "USERS" ACCOUNT UNLOCK; User created.
SQL> GRANT "CONNECT" TO "GEORGE"; Grant succeeded.
SQL> GRANT CREATE ANY DIRECTORY TO "GEORGE"; Grant succeeded.
SQL> GRANT CREATE PROCEDURE TO "GEORGE"; Grant succeeded.
SQL> GRANT QUERY REWRITE TO "GEORGE"; Grant succeeded.
SQL> GRANT CREATE TYPE TO "GEORGE"; Grant succeeded.
SQL> GRANT CREATE TABLE TO "GEORGE"; Grant succeeded.
SQL> GRANT CREATE TRIGGER TO "GEORGE"; Grant succeeded.
SQL> ALTER USER "GEORGE" QUOTA 10M ON "USERS"; User altered.
SQL> SQL> SQL> CONN GEORGE/GEORGE_at_DBXMLTEST
4 xmlns="http://www.w3.org/2001/XMLSchema" 5 > 6 <element name="EmployeeDetail"> 7 <complexType> 8 <sequence> 9 <element name="EmployeeID" type="integer"/> 10 <element name="EmployeeName" type="string"/> 11 </sequence> 12 </complexType> 13 </element> 14 </schema>';15 BEGIN
PL/SQL procedure successfully completed.
SQL> SQL> SQL> CREATE TABLE tblEmployeeDetails(ID NUMBER PRIMARY KEY, 2 EmployeeDetail XMLTYPE NOT NULL 3 ) XMLTYPE COLUMN EmployeeDetail 4 ELEMENT"http://www.companyname.com/EmployeeDetails#EmployeeDetail";
Table created.
SQL> SQL> SQL> CREATE OR REPLACE TRIGGER trgBeforeUpdateEmployeeDetails2 BEFORE INSERT ON tblEmployeeDetails 3 FOR EACH ROW
Trigger created.
SQL> SQL> SQL> INSERT INTO tblEmployeeDetails(ID,EmployeeDetail) 2 VALUES(101,XMLTYPE('<?xml version="1.0"?> 3 <EmployeeDetail xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:noNamespaceSchemaLocation="http://www.companyname.com/EmployeeDetails" 5 > 6 <EmployeeID>100</EmployeeID> 7 <EmployeeName>test string</EmployeeName> 8 </EmployeeDetail> 9 ') 10 ); INSERT INTO tblEmployeeDetails(ID,EmployeeDetail) *
SQL>
SQL>
Received on Tue Feb 17 2004 - 05:56:14 CST