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;



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

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 文化| 阿克苏市| 合山市| 酒泉市| 马关县| 铜川市| 图们市| 丹阳市| 遂川县| 江都市| 荃湾区| 松潘县| 濮阳县| 宜兴市| 宽城| 沁阳市| 甘泉县| 昭觉县| 青浦区| 望谟县| 哈密市| 澄迈县| 和林格尔县| 高雄市| 诸暨市| 东平县| 普定县| 富平县| 五常市| 蒙城县| 鲁山县| 万年县| 万载县| 南阳市| 东乡县| 含山县| 新竹县| 兴仁县| 北碚区| 临桂县| 尚义县|