PURPOSE
-------

간단한 xml 문서를 PLSQL을 이용해서 database 에
저장하고 PLSQL parser 를 이용해 validate 하는 방법을
예제를 통해 알아 봅니다.


Example
-------

Step1
-----

xml 문서를 저장할 table 을 생성합니다.

CREATE TABLE xml_doc (
docname    VARCHAR2(100) PRIMARY KEY,
doc        CLOB,
insertdate DATE DEFAULT SYSDATE);


Step 2
------

XML 문서는 os 의 physical directory 에 있으므로 oracle database
에 logical directory 를 만들어 mapping 시켜주어야 합니다.

SQL> CREATE DIRECTORY xmldocs AS `C:XML`;


만일 ORA-1031 에러가 발생할 경우 SYS 또는 SYSTEM user 로 접속해서
다음 명령으로 권한을 줍니다.

SQL> grant create any directory to scott;
Grant succeeded.


Step 3
------

database 에 넣을 XML 문서를 만듭니다.



  
     7844
     Manager
     100000
  

  
     100
     President
     200000
  




위에서 만든 emp.xml 파일을 db 에 insert 할 PLSQL procedure 를 생성합니다.


CREATE OR REPLACE PROCEDURE insertXML (dirname IN VARCHAR2,
                                       filename IN VARCHAR2)
IS
   xmlfile BFILE;
   myclob  CLOB;
BEGIN
   INSERT INTO xml_doc (docname, doc)
   VALUES (filename, empty_clob())
   RETURNING doc into myclob;  
  
   -- get a handle to the xml file on the OS
   xmlfile := Bfilename(dirname,filename);

   -- open the file
   DBMS_LOB.fileOpen(xmlfile);

   -- copy the contents of the file into the empty clob
   DBMS_LOB.loadFromFile(myclob, xmlfile, dbms_lob.getLength(xmlfile));

END insertXML;
/

Execute the Procedure

SQL> EXEC insertXML(`XMLDOCS`, `emp.xml`);

PL/SQL procedure successfully completed.



Step 4
------

insert 된 data 를 확인해 봅니다.

SQL> select * from xml_doc;

DOCNAME         DOC                                      INSERTDATE
--------------- ---------------------------------------- ---------------
emp.xml        
                          27-OCT-00
                                  
                                                  
                     7844