szhswl
          宋針還的個(gè)人空間
          存儲(chǔ)過(guò)程讀取xml文件實(shí)例:
           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;
          過(guò)程相應(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>
          如果報(bào)錯(cuò)ORA-20100:Error occurred while parsing: No such file or directory,在服務(wù)器端首先把文件的讀取權(quán)限授予運(yùn)行存儲(chǔ)過(guò)程的用戶(hù),如:
          GRANT READ[,WRITE] ON DIRECTORY directory TO username;
          實(shí)例:grant read, write on directory exp_dir to user;



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

          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 剑阁县| 滦南县| 周口市| 射洪县| 碌曲县| 化德县| 灵璧县| 松阳县| 华容县| 龙南县| 朝阳区| 涪陵区| 阿城市| 留坝县| 泗阳县| 岐山县| 盖州市| 惠来县| 财经| 兰考县| 民乐县| 雷波县| 广平县| 南雄市| 江津市| 江口县| 渭源县| 万全县| 丽水市| 含山县| 唐河县| 合山市| 都江堰市| 通道| 荃湾区| 河池市| 磐安县| 七台河市| 彰化县| 台中县| 余庆县|