以下存储过程代码适用于我们的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