Oracle存储过程 - 可能是10g和11g之间的差异?

时间:2013-09-04 14:59:47

标签: oracle stored-procedures dbms-scheduler

以下存储过程代码适用于与Oracle 11G一起运行的DEV和TEST环境,但在我们的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行(粗体)中显示为barf。

dbms_scheduler是否在10G中运行?或者'sys.anydata.convertCollection(v_multiples_columns_to_add)'可能存在问题

以下是错误消息:

ORA-22370:我的程序中第19行的方法使用不正确。

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

请帮忙!

1 个答案:

答案 0 :(得分: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