Tôi có một vài thủ tục oracle:Làm thế nào để giải quyết ORA-27.475: "JOB" phải là một chương trình hay chuỗi
create or replace procedure receive_sms (p_to_date in date)
is
..
end;
và
create or replace procedure send_sms (p_date in date)
is
..
end;
và tôi muốn tạo một chuỗi dựa về các quy trình này và thêm các bước vào chuỗi và một số quy tắc:
BEGIN
DBMS_SCHEDULER.CREATE_CHAIN (
chain_name => 'mobile_archive_chain',
rule_set_name => NULL,
evaluation_interval => NULL,
comments => NULL);
END;
/
--- define three steps for this chain. Referenced programs must be enabled.
BEGIN
DBMS_SCHEDULER.DEFINE_CHAIN_STEP('mobile_archive_chain', 'send', 'inforpilla.send_sms');
DBMS_SCHEDULER.DEFINE_CHAIN_STEP('mobile_archive_chain', 'receive', 'inforpilla.receive_sms');
END;
/
--- define corresponding rules for the chain.
BEGIN
DBMS_SCHEDULER.DEFINE_CHAIN_RULE ('mobile_archive_chain', 'TRUE', 'START send');
DBMS_SCHEDULER.DEFINE_CHAIN_RULE ('mobile_archive_chain', 'send COMPLETED', 'Start receive');
DBMS_SCHEDULER.DEFINE_CHAIN_RULE ('mobile_archive_chain', 'receive COMPLETED', 'END');
END;
/
--- enable the chain
BEGIN
DBMS_SCHEDULER.ENABLE('mobile_archive_chain');
END;
/
--- create a chain job to start the chain daily at 1:00 p.m.
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'start_archive',
job_type => 'CHAIN',
job_action => 'mobile_archive_chain',
repeat_interval => 'freq=daily;byhour=15;byminute=3;bysecond=0',
enabled => TRUE);
END;
/
Nhưng kiểm tra bảng nhật ký Tôi thấy rằng công việc không thành công với mã ERROR: 27475
SELECT * from USER_SCHEDULER_JOB_RUN_DETAILS ORDER BY LOG_DATE DESC
như đề nghị tôi loại bỏ các thông số thành các thủ tục, nhưng sau đó tôi nhận được các lỗi này:
CHAIN_LOG_ID="201095"
CHAIN_LOG_ID="201095",STEP_NAME="RECEIVE", ORA-27475: "TEST.RECEIVE_SMS" must be a PROGRAM OR CHAIN
CHAIN_LOG_ID="201095",STEP_NAME="SEND", ORA-27475: "TEST.SEND_SMS" must be a PROGRAM OR CHAIN
không nghĩ vậy. từ các tài liệu https://docs.oracle.com/cd/B28359_01/server.111/b28310/scheduse009.htm # ADMIN12456 –
Ngoài ra, có một vấn đề khác trong chuỗi cuộc gọi của bạn. Các thủ tục bạn mong đợi tham số (p_to_date) và các tham số này không được thông qua trong các cuộc gọi bước chuỗi. Điều này sẽ gây ra một vấn đề. Không có cách nào trực tiếp để truyền các tham số chuỗi. Hãy xem bài đăng này: https://community.oracle.com/message/1459336#1459336 –