Oracle 在数据库中加载外部XML文件背后的逻辑

Oracle 在数据库中加载外部XML文件背后的逻辑,oracle,xmltype,Oracle,Xmltype,您好,我是Oracle中XML文件处理的新手。我在看一段代码,该代码将XML从外部文件加载到数据库列中。我有些怀疑 CREATE OR REPLACE DIRECTORY xml_dir AS 'c:temp'; CREATE TABLE xml_tab ( id NUMBER(10), filename VARCHAR2(100), xml XMLTYPE ) / ALTER TABLE xml_tab ADD ( CONSTRAINT xml_

您好,我是Oracle中XML文件处理的新手。我在看一段代码,该代码将XML从外部文件加载到数据库列中。我有些怀疑

CREATE OR REPLACE DIRECTORY xml_dir AS 'c:temp';

CREATE TABLE xml_tab (
  id        NUMBER(10),
  filename  VARCHAR2(100),
  xml       XMLTYPE
)
/

ALTER TABLE xml_tab ADD (
  CONSTRAINT xml_tab_pk PRIMARY KEY (id)
)
/

CREATE SEQUENCE xml_tab_seq;



    CREATE OR REPLACE PROCEDURE load_xml (p_dir       IN  VARCHAR2,
                                      p_filename  IN  VARCHAR2) AS
  l_bfile  BFILE := BFILENAME(p_dir, p_filename);
  l_clob   CLOB;
BEGIN
  DBMS_LOB.createtemporary (l_clob, TRUE);       
  DBMS_LOB.fileopen(l_bfile, DBMS_LOB.file_readonly);  
  DBMS_LOB.loadfromfile(l_clob, l_bfile, DBMS_LOB.getlength(l_bfile));
  DBMS_LOB.fileclose(l_bfile);

  INSERT INTO xml_tab (
    id,
    filename,
    xml
  )
  VALUES (
    xml_tab_seq.NEXTVAL,
    p_filename,
    XMLTYPE.createXML(l_clob)
  );
  COMMIT;
  
  DBMS_LOB.freetemporary (l_clob);
END;
/
怀疑-

有必要这样做吗?目的是什么?DBMS_LOB.createtemporary l_clob,对吗

我们可以不做XMLTYPE.CreateXMLl\u clob而做XMLTYPEl\u clob吗?这两者有什么区别

我知道这些都是基本问题,但我正在努力理解根本原因


您在哪里找到此代码的?我从oracle base中获取。您是否有指向原始页面的链接?请在oracle base中搜索。键入XML类型谢谢。Oracle的哪个版本?