标签: ora-06512

在Oracle PL/SQL中针对模式验证XML文件

我需要根据XSD验证传入的文件.两者都将在服务器文件系统上.

我看过了dbms_xmlschema,但是有问题让它发挥作用.

使用Java可以更容易吗?
我可以在数据库中放入的最简单的类是什么?

这是一个简单的例子:

DECLARE
  v_schema_url       VARCHAR2(200) := 'http://www.example.com/schema.xsd';
  v_blob             bLOB;
  v_clob             CLOB;
  v_xml XMLTYPE;
BEGIN
  begin
    dbms_xmlschema.deleteschema(v_schema_url);
  exception
    when others then
     null;
  end;

  dbms_xmlschema.registerSchema(schemaURL => v_schema_url,
                                schemaDoc => '
<xs:schema targetNamespace="http://www.example.com" 
xmlns:ns="http://www.example.com" 
xmlns:xs="http://www.w3.org/2001/XMLSchema" 
elementFormDefault="qualified" attributeFormDefault="unqualified" version="3.0">
<xs:element name="something"  type="xs:string"/>
</xs:schema>',
                                local => TRUE);

  v_xml := XMLTYPE.createxml('<something xmlns="http://www.xx.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.example.com/schema.xsd">
data
</something>');

  IF v_xml.isschemavalid(v_schema_url) = 1 THEN
    dbms_output.put_line('valid');
  ELSE
    dbms_output.put_line('not valid');
  END IF;
END;
Run Code Online (Sandbox Code Playgroud)

这会生成以下错误:

ORA-01031: insufficient privileges
ORA-06512: at "XDB.DBMS_XDBZ0", line 275
ORA-06512: at "XDB.DBMS_XDBZ", line …
Run Code Online (Sandbox Code Playgroud)

xml oracle ora-06512

6
推荐指数
2
解决办法
2万
查看次数

Oracle的object_type JOB的dbms_metadata.get_ddl

我想为我的大多数数据库对象创建ddl脚本.dbms_metadata.get_ddl适用于大多数对象类型.例如,以下内容为视图创建ddl:

select dbms_metadata.get_ddl ( 'VIEW', 'SAMPLE_VIEW') from dual
Run Code Online (Sandbox Code Playgroud)

另一方面,它不适用于object_type'JOB'.下列:

select dbms_metadata.get_ddl( 'JOB', 'SAMPLE_JOB' ) from dual
Run Code Online (Sandbox Code Playgroud)

给出以下错误:

ORA-31604: invalid NAME parameter "NAME" for object type JOB in function SET_FILTER
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 116
ORA-06512: at "SYS.DBMS_METADATA_INT", line 4705
ORA-06512: at "SYS.DBMS_METADATA_INT", line 8582
ORA-06512: at "SYS.DBMS_METADATA", line 2882
ORA-06512: at "SYS.DBMS_METADATA", line 2748
ORA-06512: at "SYS.DBMS_METADATA", line 4333
ORA-06512: at line 1
Run Code Online (Sandbox Code Playgroud)

如果我使用列出我的工作

select * from user_objects where object_type='JOB'
Run Code Online (Sandbox Code Playgroud)

它显示了SAMPLE_JOB(就像它显示了SAMPLE_VIEW,如果过滤了object_type ='VIEW').

为什么它适用于VIEW(以及TABLE,INDEX,TRIGGER,...)而不适用于JOB?

我正在使用Oracle 10g.

oracle jobs oracle10g dbms-metadata ora-06512

6
推荐指数
1
解决办法
3万
查看次数

ORA-29283:文件操作无效ORA-06512:在"SYS.UTL_FILE",第536行

下面是我用来从表格中提取数据到平面文件的代码.

BEGIN
    DECLARE
        file_name VARCHAR2(50);
        file_handle utl_file.file_type;
BEGIN
    file_name := 'table.txt';
    file_handle := utl_file.fopen('SEND',file_name,'W');
FOR rec in(
    SELECT            column 1
                ||'~'||column 2
                ||'~'||column 3 out_line
    FROM table1)LOOP
UTL_FILE.PUT_LINE(file_handle,rec.out_line);
UTL_FILE.FFLUSH(file_handle);
END LOOP;
UTL_FILE.FCLOSE(file_handle);
END;
end;
Run Code Online (Sandbox Code Playgroud)

这段代码在我们的开发数据库中工作正常,但是如果我在新的数据库中执行它会抛出以下错误.

Error starting at line 1 in command:
    BEGIN
    DECLARE
        file_name VARCHAR2(50);
        file_handle utl_file.file_type;
BEGIN
    file_name := 'table.txt';
    file_handle := utl_file.fopen('SEND',file_name,'W');
FOR rec in(
    SELECT            column 1
                ||'~'||column 2
                ||'~'||column 3 out_line
    FROM table1)LOOP
UTL_FILE.PUT_LINE(file_handle,rec.out_line);
UTL_FILE.FFLUSH(file_handle);
END LOOP;
UTL_FILE.FCLOSE(file_handle);
END;
end;

Error report:
ORA-29283: invalid file …
Run Code Online (Sandbox Code Playgroud)

oracle plsql oracle11g ora-06512

6
推荐指数
1
解决办法
17万
查看次数

PL/SQL Append_Values Hint给出错误消息

我无法使用PL/SQL在Oracle表中执行大量插入操作.我的查询逐行进行,对于每一行,查询进行计算以确定需要插入另一个表的行数.传统的插入工作,但代码需要很长时间才能运行大量的行.为了加快插入速度,我尝试使用Append_Values提示,如下例所示:

BEGIN
FOR iter in 1..100 LOOP
INSERT /*+ APPEND_VALUES*/ INTO test_append_value_hint values (iter);
END LOOP;
END;
Run Code Online (Sandbox Code Playgroud)

执行此操作时,我收到以下错误消息:

ORA-12838: cannot read/modify an object after modifying it in parallel
ORA-06512: at line 3
12838. 00000 -  "cannot read/modify an object after modifying it in parallel"
*Cause:    Within the same transaction, an attempt was made to add read or
           modification statements on a table after it had been modified in parallel
           or with direct load. This is not permitted.
*Action: …
Run Code Online (Sandbox Code Playgroud)

oracle plsql ora-06512

5
推荐指数
1
解决办法
1万
查看次数

Oracle错误ORA-06512

只是想不通为什么它给了我ORA-06512错误

PROCEDURE PX(pNum INT,pIdM INT,pCv VARCHAR2,pSup FLOAT)
AS
    vSOME_EX EXCEPTION;

BEGIN 
    IF ((pNum < 12) OR (pNum > 14)) THEN     
        RAISE vSOME_EX;
    ELSE  
        EXECUTE IMMEDIATE  'INSERT INTO M'||pNum||'GR (CV, SUP, IDM'||pNum||') VALUES('||pCv||', '||pSup||', '||pIdM||')';
    END IF;
END PX;
Run Code Online (Sandbox Code Playgroud)

制作插入物的表格的结构基础:

CREATE TABLE "DB"."M12GR" (
    "IDM12GR" NUMBER(10,0) NOT NULL ENABLE, 
    "CV" VARCHAR(5) NOT NULL ENABLE, 
    "SUP" FLOAT(126) NOT NULL ENABLE, 
    "IDM12" NUMBER(10,0) NOT NULL ENABLE, 

    CONSTRAINT "PRIMARY_30" PRIMARY KEY ("IDM12GR"),
    CONSTRAINT "M12SUELORM12" FOREIGN KEY ("IDM12") REFERENCES "DB"."M12" ("IDM12") ENABLE
)
Run Code Online (Sandbox Code Playgroud)

oracle plsql stored-procedures ora-06512

4
推荐指数
1
解决办法
20万
查看次数

创建Oracle过程

我正在尝试创建一个程序,它创建没有错误.但是当我尝试运行它时,我会得到以下错误.请指教

SQL> begin
  2   Update_STUD_Fin ( '1011');
  3  end;
  4  /
begin
*
ERROR at line 1:
ORA-06511: PL/SQL: cursor already open
ORA-06512: at "ORAIN.UPDATE_STUD_FIN", line 3
ORA-06512: at "ORAIN.UPDATE_STUD_FIN", line 8
ORA-06512: at line 2
Run Code Online (Sandbox Code Playgroud)

程序是

SQL> CREATE OR REPLACE PROCEDURE Update_STUD_Fin ( AIDY_CODE IN VARCHAR2 ) IS
  2    CURSOR PublicationC IS
  3      SELECT SGidm from SGB
  4       WHERE SGCODE_EFF ='201030';
  5  BEGIN
  6    OPEN PublicationC;
  7  
  8    FOR PublicationR IN PublicationC
  9    LOOP
 10      DBMS_OUTPUT.PUT_LINE( PublicationR.SGidm );
 11 …
Run Code Online (Sandbox Code Playgroud)

oracle plsql stored-procedures ora-06512

3
推荐指数
2
解决办法
3711
查看次数

如何使用存储过程将文件读入 oracle DB

我正在尝试将文件作为 blob 读入我的 oracle 表中。该文件是 *.gz 数据。我环顾了'网络并找到了一些例子,这就是我想出的:

创建或替换 PROCEDURE upload_supp_data
是
   src_file BFILE;
   dst_file BLOB;
   lgh_file BINARY_INTEGER;
   data_dir varchar2(20) := '/tmp/';
   文件名 varchar2(50) := '200912020200.rep-ids-top50-sip.txt.gz';
开始

   src_file := BFILENAME (data_dir, file_name);

   -- 插入一条NULL记录进行锁定
   INSERT INTO alarms_supplemental
               (alarm_id, resource_id, 补充数据
               )
        值 (13794740, 1, EMPTY_BLOB ()
               )
     返回补充数据
          进入 dst_file;

   -- 锁定记录
   选择补充数据
         进入 dst_file
         FROM alarms_supplemental
        WHERE alarm_id = 13794740
   更新;

   -- 打开文件
   DBMS_LOB.fileopen (src_file, DBMS_LOB.file_readonly);
   -- 确定长度
   lgh_file := DBMS_LOB.getlength (src_file);
   --读取文件
   DBMS_LOB.loadfromfile (dst_file, src_file, lgh_file);

   -- 更新 blob …

oracle stored-procedures blob ora-06512

3
推荐指数
1
解决办法
9848
查看次数

在oracle中将字符串作为查询运行

我在Oracle中遇到了一些问题.我尝试创建一个序列,用于在已包含数据的表中生成ID.我尝试使用以下匿名块.

declare y varchar2(2000);
BEGIN
  SELECT 'CREATE SEQUENCE ID_SEQ MINVALUE 1 MAXVALUE 9999999999 START WITH ' || (max(ID)+1) || ' INCREMENT BY 1 CACHE 20;' INTO y FROM TEST_TABLE;
  --dbms_output.put_line(y);
  execute immediate y;
end;
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Error report:
ORA-00911: invalid character
ORA-06512: at line 5
00911. 00000 -  "invalid character"
Run Code Online (Sandbox Code Playgroud)

如果我执行y变量的值,它就可以完美地运行.我正在使用SQL Developer作为输入接口并在11g r2 Oracle服务器上工作.我找到了类似的代码,其中'INCREMENT BY'参数是脚本生成的.有人可以解释我的错误吗?

oracle sequence execute-immediate ora-06512

2
推荐指数
1
解决办法
7160
查看次数