gpt4 book ai didi

database - 使用参数创建 dbms_scheduler.create_job

转载 作者:行者123 更新时间:2023-12-05 01:02:41 26 4
gpt4 key购买 nike

我正在尝试使用带有参数的 dbms_scheduler.create_job 创建一个简单的作业。以下是我创建工作的简单过程:

create or replace procedure SCRIPT_DBMS_SCHEDULER
as
v_text varchar2(255):='Parameter passed from Oracle to Linux';
l_job_exists number;

Begin
select count(*) into l_job_exists
from user_scheduler_jobs
where job_name = 'script_dbms_scheduler_test';

if l_job_exists = 1 then
dbms_scheduler.drop_job(job_name => 'script_dbms_scheduler_test');
end if;

dbms_output.put_line('I am in Procedure');
dbms_scheduler.create_job
(job_name=>'script_dbms_scheduler_test',
job_action=>'/data/home/workflow/script_dbms_scheduler.ksh',
job_type=>'executable',
number_of_arguments=>1,
enabled=>TRUE,
auto_drop => TRUE,
comments=> 'Run shell-script script_dbms_scheduler.ksh');
dbms_scheduler.set_job_argument_value(job_name =>'script_dbms_scheduler_test', argument_position => 1, argument_value => v_text);
dbms_scheduler.enable('script_dbms_scheduler_test');
dbms_output.put_line('I am back in Procedure');

Exception
when others then
dbms_output.put_line(sqlcode||sqlerrm);
end;

当参数为 0 时它工作正常。但是当我尝试传递至少 1 个参数时,我收到以下错误:

ORA-27457: argument 1 of job "IITWFU.SCRIPT_DBMS_SCHEDULER_TEST" has no value

不知道我错过了什么。非常感谢任何帮助。

谢谢

最佳答案

问题是脚本中的这一行:

enabled=>TRUE,

这意味着该作业在创建后立即启用。但是,此时您还没有设置参数。因此出现错误。

所以你需要做的是设置 enabled=>FALSE (这实际上是 the default for CREATE_JOB() )。在调用 SET_ARGUMENT 后,您已经调用了 ENABLE() 作业,因此您的代码现在应该可以工作了。

关于database - 使用参数创建 dbms_scheduler.create_job,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29287440/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com