从 JOBS 中的包调用过程

Posted

技术标签:

【中文标题】从 JOBS 中的包调用过程【英文标题】:Calling procedure from package in JOBS 【发布时间】:2012-08-22 11:45:14 【问题描述】:

我在Oracle SQL Developer 工作,我在包体中创建了一个包“XXX”和一个过程UPDATE_CUSTOMERS_RECORDS。我测试了这个过程,它成功了。

但我想在 JOBS 中调用这个过程。我做了一份工作,在“工作类型”中选择PL/SQL Block 选项并输入MERITUM.update_customers_records(),但它不起作用:

"ORA-06550: line ORA-06550: line 1, column 506:
PLS-00103: Encountered the symbol "" when expecting one of the following:

   := . ( % ;
The symbol ";" was substituted for "" to continue.
, column :"

我也尝试了call MERITUM.update_customers_records(),但出现了同样的错误。

【问题讨论】:

【参考方案1】:

试试

MERITUM.update_customers_records();

应该使用;

【讨论】:

错误是否相同?尝试使用 dbms_job.submit(或 dbms_scheduler,如果您有此经验) - 可能问题出在 OracleSQLDeveloper 本身。【参考方案2】:

J 找到了解决方案。而是

MERITUM.update_customers_records();

PL/SQL Block我放

declare
begin
  MERITUM.update_customers_records();
end;

终于成功了:)

【讨论】:

如果您不声明任何局部变量,则不需要 DECLARE。只需使用BEGINEND 这很奇怪,因为所有的 oracle 示例都不使用 begin end 因为这些子句应该由 dbms_job 或 dbms_scheduler 隐式添加...

以上是关于从 JOBS 中的包调用过程的主要内容,如果未能解决你的问题,请参考以下文章

DBMS_JOBS调用存储过程中有DBLink,导致JOB HANG住,无法正常运行

为啥 PDI 找不到/运行我的包存储过程?

调用包中的过程或函数

从 Rails 中的其他控制器调用方法

在从不同模式调用过程时如何在 oracle 中查找所有嵌套的依赖对象

Oracle job procedure 存储过程定时任务