No. 20161
XML 파일을 PLSQL을 이용해서 CLOB에 저장하는 예제
================================================
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 문서를 만듭니다.
<!--emp.xml -->
<EMPTABLE>
<EMPLOYEE ENAME="Scott">
<EMPNO>7844</EMPNO>
<JOB>Manager</JOB>
<SAL>100000</SAL>
</EMPLOYEE>
<EMPLOYEE ENAME="King">
<EMPNO>100</EMPNO>
<JOB>President</JOB>
<SAL>200000</SAL>
</EMPLOYEE>
</EMPTABLE>
위에서 만든 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 <!--emp.xml -->
27-OCT-00
<EMPTABLE>
<EMPLOYEE ENAME="Scott">
<EMPNO>7844</EMPNO>
Reference Documents
-------------------
NOTE:123491.1
***** 아름다운프로님에 의해서 게시물 복사 + 카테고리변경되었습니다 (2003-12-18 16:49)