这是脚本本身:
exec SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
( name => 'MMK2PROD.UPDATEORDERIDATTRS_PROG'
,attribute => 'PROGRAM_ACTION'
,value => 'begin
PROCESS_BATCHKEYSUPDATEMANUAL;
UPDATEORDERIDATTRS;
PROCESS_ALLSLUPDATEMANUAL;
end;')
,number_of_arguments => 0
,enabled => FALSE
,comments => NULL
);
exec SYS.DBMS_SCHEDULER.ENABLE
(name => 'MMK2PROD.UPDATEORDERIDATTRS_PROG');
我运行了三个程序,但出现错误:
Error at line 1
ORA-06550: Строка 1, столбец 7:
PLS-00306: ошибочно число или типы аргументов при обращении к 'SET_ATTRIBUTE'
ORA-06550: Строка 1, столбец 7:
我无法弄清楚为什么不能更改属性。
这是我更改属性的原因:
BEGIN
DBMS_SCHEDULER.DROP_PROGRAM
(program_name => 'MMK2PROD.UPDATEORDERIDATTRS_PROG');
END;
/
BEGIN
SYS.DBMS_SCHEDULER.CREATE_PROGRAM
(
program_name => 'MMK2PROD.UPDATEORDERIDATTRS_PROG'
,program_type => 'STORED_PROCEDURE'
,program_action => 'UPDATEORDERIDATTRS'
,number_of_arguments => 0
,enabled => FALSE
,comments => NULL
);
SYS.DBMS_SCHEDULER.ENABLE
(name => 'MMK2PROD.UPDATEORDERIDATTRS_PROG');
END;
/
所有程序都在工作。
我试图重现并创建一个程序,如问题中那样,用
MMK2PROD现有的方案替换该方案db3,更正了参数的数量和传递给value.事实上,该错误被重现:
上面的命令所做
exec的是将以下语句包装在begin-end;一个块中,可能会添加一个缺失的语句;,然后运行结果。但是,正如您在错误消息中看到的那样,这只影响第一行,因此,尝试在没有任何参数的情况下执行该过程。 我引用:
必要的:
-(连字符)begin-end;的情况下,显式编写块所以: