szhswl
          宋針還的個人空間
          存儲過程讀取xml文件實例:
           1PROCEDURE EXECUTE_DATESERV IS
           2  BEGIN
           3    DECLARE
           4      DIR         VARCHAR2(50);
           5      SERVFILE    VARCHAR2(20);
           6      V_XP        XMLPARSER.PARSER;
           7      V_DOC       XMLDOM.DOMDOCUMENT;
           8      V_MAPPINGS  XMLDOM.DOMNODELIST;
           9      V_MAPLEN    NUMBER(3);
          10      V_TABLE     XMLDOM.DOMNODELIST;
          11      V_TABLELEN  NUMBER(3);
          12      V_FIELD     XMLDOM.DOMNODELIST;
          13      V_MAPITEM   XMLDOM.DOMNODE;
          14      V_TABLEITEM XMLDOM.DOMNODE;     NNM         XMLDOM.DOMNAMEDNODEMAP;
          15      V_BO        VARCHAR2(20);
          16      V_VALID     VARCHAR2(20);
          17      V_FIELDID   VARCHAR2(20);
          18      V_BOOLEAN   NUMBER(2);
          19      V_TEXT      VARCHAR2(200);
          20    BEGIN
          21      DIR      := '/oracle/szh';
          22      SERVFILE := 'dateserv.xml';
          23      V_XP     := XMLPARSER.NEWPARSER;
          24      XMLPARSER.SETVALIDATIONMODE(V_XP, FALSE);
          25      XMLPARSER.SETBASEDIR(V_XP, DIR);
          26      XMLPARSER.PARSE(V_XP, DIR || '/' || SERVFILE);
          27      V_DOC := XMLPARSER.GETDOCUMENT(V_XP);
          28      XMLPARSER.FREEPARSER(V_XP);
          29      V_MAPPINGS := XMLDOM.GETELEMENTSBYTAGNAME(V_DOC, 'mappings');
          30      V_MAPLEN   := XMLDOM.GETLENGTH(V_MAPPINGS);
          31      FOR V_I IN 0 .. V_MAPLEN - 1 LOOP
          32        V_MAPITEM  := XMLDOM.ITEM(V_MAPPINGS, V_I);
          33        V_TABLE    := XMLDOM.GETCHILDNODES(V_MAPITEM);
          34        V_TABLELEN := XMLDOM.GETLENGTH(V_TABLE);
          35        FOR V_J IN 0 .. V_TABLELEN - 1 LOOP
          36          V_TABLEITEM := XMLDOM.ITEM(V_TABLE, V_J);
          37          IF XMLDOM.GETNODENAME(V_TABLEITEM) = 'table' THEN
          38            NNM  := XMLDOM.GETATTRIBUTES(V_TABLEITEM);
          39            V_BO := XMLDOM.GETNODEVALUE(XMLDOM.ITEM(NNM, 0));
          40          END IF;
          41          V_FIELD   := XMLDOM.GETCHILDNODES(V_TABLEITEM);
          42          V_FIELDID := XMLDOM.GETNODEVALUE(XMLDOM.GETFIRSTCHILD(XMLDOM.ITEM(V_FIELD,
          43                                                                            0)));
          44          V_VALID   := XMLDOM.GETNODEVALUE(XMLDOM.GETFIRSTCHILD(XMLDOM.ITEM(V_FIELD,
          45                                                                            1)));
          46          PRO_SZH_SEQ.UPDATE_ENDDATE(V_BO,
          47                                     V_FIELDID,
          48                                     V_VALID,
          49                                     V_BOOLEAN,
          50                                     V_TEXT);
          51          IF V_BOOLEAN <> 1 THEN
          52            EXECUTE_INSERT_ERROR('pk_szh_date.excute_dateserv error :' ||
          53                                 V_TEXT);
          54          END IF;
          55        END LOOP;
          56      END LOOP;
          57      XMLDOM.FREEDOCUMENT(V_DOC);
          58    END;
          59    NULL;
          60  END EXECUTE_DATESERV;
          過程相應(yīng)的XML文件:
           1<?xml version="1.0" encoding="ISO-8859-1"?>
           2<mappings>    
           3    <table name="enrollcon" >
           4        <field>enddate</field>
           5        <valid>valid</valid>
           6    </table>
           7    <table name="precautcon" >
           8        <field>enddate</field>
           9        <valid>valid</valid>
          10    </table>
          11    <table name="jrbill" >
          12        <field>endtime</field>
          13        <valid>validflag</valid>
          14    </table>
          15    <table name="jr97" >
          16        <field>endtime</field>
          17        <valid>validflag</valid>
          18    </table>
          19    <table name="mer" >
          20        <field>exitdate</field>
          21        <valid>valid</valid>
          22    </table>
          23    <table name="merabate" >
          24        <field>enddate</field>
          25        <valid>valid</valid>
          26    </table>
          27    <table name="booking" >
          28        <field>obligatedate</field>
          29        <valid>valid</valid>
          30    </table>
          31</mappings>
          如果報錯ORA-20100:Error occurred while parsing: No such file or directory,在服務(wù)器端首先把文件的讀取權(quán)限授予運行存儲過程的用戶,如:
          GRANT READ[,WRITE] ON DIRECTORY directory TO username;
          實例:grant read, write on directory exp_dir to user;



          ---------------------------------------------------------------------------------------------------------------------------------
          說人之短,乃護(hù)己之短。夸己之長,乃忌人之長。皆由存心不厚,識量太狹耳。能去此弊,可以進(jìn)德,可以遠(yuǎn)怨。
          http://www.aygfsteel.com/szhswl
          ------------------------------------------------------------------------------------------------------ ----------------- ---------
          posted on 2007-12-05 11:13 宋針還 閱讀(903) 評論(0)  編輯  收藏 所屬分類: 存儲過程

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 随州市| 嘉鱼县| 汝阳县| 邳州市| 吉水县| 华宁县| 正宁县| 罗定市| 龙川县| 西乌珠穆沁旗| 吉林省| 嵊泗县| 香河县| 壶关县| 白河县| 天柱县| 萍乡市| 突泉县| 庄浪县| 慈利县| 饶河县| 涿州市| 临澧县| 东台市| 白银市| 吉首市| 廉江市| 中卫市| 通榆县| 武鸣县| 酒泉市| 育儿| 宜州市| 桑日县| 馆陶县| 霍林郭勒市| 鹤峰县| 霍山县| 焦作市| 泗水县| 平舆县|