ORA-22288: 将 xml 文件传递​​给 SQL 开发人员

ORA-22288: passing xml file to SQL Developper

你知道如何解决这个错误吗?该文件存在于我的计算机上,但出了点问题。我创建了一个 XML 文件,后来我为它创建了一个模式 (.xsd),现在我想将模式文件与我的 oracle 数据库连接起来,在这个函数之后我会创建一个 table 对于这个模式。

我也试过将文件放在 oracle 目录下,但没有用。

BEGIN
  DBMS_XMLSCHEMA.registerSchema(
    SCHEMAURL => 'http://xmlns.oracle.com/xdb/documentation/peldesana.xsd',
    SCHEMADOC => bfilename('MAPE','peldesana.xsd'),
    LOCAL     => TRUE,
    GENTYPES  => FALSE, 
    GENTABLES => FALSE, 
    CSID      => nls_charset_id('AL32UTF8'));
END;

错误:

ORA-22285: non-existent directory or file for FILEOPEN operation
ORA-06512: at "SYS.DBMS_LOB", line 822
ORA-06512: at "XDB.DBMS_XMLSCHEMA", line 131
ORA-06512: at line 2
22285. 00000 - "non-existent directory or file for %s operation"

*Cause: Attempted to access a directory that does not exist, or attempted to access a file in a directory that does not exist.
*Action: Ensure that a system object corresponding to the specified directory exists in the database dictionary, or make sure the name is correct.

创建一个目录是不够的。

目录,指向文件系统目录(文件夹)的对象,由SYS创建。

SQL> connect sys as sysdba
Enter password:
Connected.
SQL> create or replace directory xml_dir as 'c:\temp';

Directory created.

然后您必须授予该目录的权限 给将要使用它的用户。如果您只从中读取数据,请授予 read;如果您还要在那里创建文件,请同时授予 write

SQL> grant read, write on directory xml_dir to scott;

Grant succeeded.

SQL>

现在,用户 scott 将能够访问其中的目录和文件。

最后我又得到了 generated.xsd 文件(使用相同的 .xml 文件)。然后我又添加了一行 (OPTIONS => 2),现在一切正常。

BEGIN
  DBMS_XMLSCHEMA.registerSchema(
    SCHEMAURL => 'http://xmlns.oracle.com/xdb/documentation/peldesana2.xsd',
    SCHEMADOC => bfilename('INPUT_DIR','peldesana2.xsd'),
    LOCAL     => TRUE,
    GENTYPES  => FALSE, 
    GENTABLES => FALSE, 
    CSID      => nls_charset_id('AL32UTF8'),
    OPTIONS    => 2);
END;