Oracle存储过程—10g和11g之间可能存在差异



以下存储过程代码适用于我们的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_seduller上显示为barf(粗体)。

dbms_sscheduler在10G中工作吗?或者可能是'sys.anydata.convertCollection(v_multiples_columns_to_ad'有问题

这是错误消息:

ORA-22370:方法的错误使用源于我的过程中的第19行。

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

请帮忙!

我在文档中发现了这一点:

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

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

这也可能与以下内容有关:具有基于行类型的集合的ANYDATA

最新更新