以下存储过程代码适用于与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()调用的行。
请帮忙!
答案 0 :(得分:1)
我在文档中找到了这个:
http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_sched.htm#i1000820
SET_JOB_ANYDATA_VALUE要求您是该作业的所有者或对该作业具有ALTER权限。如果您具有CREATE ANY JOB权限,也可以设置作业参数值。