【问题标题】:Calling procedure from package in JOBS从 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(),但出现了同样的错误。

【问题讨论】:

    标签: oracle plsql jobs oracle-sqldeveloper


    【解决方案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 隐式添加...
    猜你喜欢
    • 1970-01-01
    • 2015-09-21
    • 1970-01-01
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-12
    • 2014-06-10
    相关资源
    最近更新 更多