2

以下存储过程代码适用于我们的 DEV 和 TEST 环境,它们与 Oracle 11G 一起运行,但不适用于我们的 10G PROD 环境:

首先,我在 Oracle 中创建了自己的数据结构来保存任何 VARCHAR2 数组:

create or replace
type MAT_MULTIPLES_ARRAY as table of VARCHAR2(100);

这是程序代码:

    create or replace PROCEDURE MAT_SUBMIT_JOB (v_multiples_columns_to_add IN our_schema.MAT_MULTIPLES_ARRAY)

    v_jobno number;
    v_job_name VARCHAR2(100);
    v_error_message VARCHAR2(32000);

    begin

    v_job_name := 'doesnt matter right now';

    dbms_scheduler.create_job(v_job_name,program_name=>'MAT_JOB_PROGRAM');
    dbms_scheduler.set_job_anydata_value(v_job_name,1,sys.anydata.convertCollection(v_multiples_columns_to_add));

    dbms_scheduler.enable(v_job_name);

    end;

同样,同样的代码在我们的 DEV 和 TEST 环境中工作在 11G 中,它在我们的 10G 环境中编译,但是在运行时,在第二个 dbms_scheduler 行(粗体)上看起来很糟糕。

dbms_scheduler 是否在 10G 中工作?或者“sys.anydata.convertCollection(v_multiples_columns_to_add)”可能有问题

这是错误消息:

ORA-22370: 在我的过程中源自第 19 行的方法使用不正确。

第 19 行是调用 convertCollection() 的行。

请帮忙!

4

1 回答 1

1

我在文档中找到了这个:

http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_sched.htm#i1000820

SET_JOB_ANYDATA_VALUE 要求您是作业的所有者或对该作业具有 ALTER 权限。如果您具有 CREATE ANY JOB 权限,您还可以设置作业参数值。

这也可能是相关的: ANYDATA with Collections based on rowtype

于 2013-10-04T04:30:34.367 回答