从 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
。只需使用BEGIN
和END
。
这很奇怪,因为所有的 oracle 示例都不使用 begin end 因为这些子句应该由 dbms_job 或 dbms_scheduler 隐式添加...以上是关于从 JOBS 中的包调用过程的主要内容,如果未能解决你的问题,请参考以下文章
DBMS_JOBS调用存储过程中有DBLink,导致JOB HANG住,无法正常运行