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)
Posted by 아름프로
BLOG main image

카테고리

분류 전체보기 (539)
이야기방 (19)
토론/정보/사설 (16)
IBM Rational (9)
U-IT (0)
SOA/WS/ebXML (110)
개발방법론/모델링 (122)
J2SE (34)
J2EE (60)
DataBase (39)
Open Projects (30)
BP/표준화 (50)
Apache Projects (15)
Web/보안/OS (22)
Tools (7)
AJAX/WEB2.0 (1)
Linux/Unix (1)
영어 (0)
비공개방 (0)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

달력

«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

글 보관함

Total :
Today : Yesterday :