Oracle并发编程执行方法

Posted

技术标签:

【中文标题】Oracle并发编程执行方法【英文标题】:Oracle concurrent programming execution methods 【发布时间】:2012-03-20 07:51:59 【问题描述】:

我在其下创建了一个包和存储过程来测试并发程序。当我将它作为 Oracle 报告可执行方法运行时。它工作正常。但是我将其更改为 PL/SQL 存储过程然后它给出了错误。

原因:FDPSTP 由于 ORA-06550 失败:第 1 行,第 7 列:PLS-00306: 调用 'pop_rpt_tbl' ORA-06550 时参数的数量或类型错误: 第 1 行第 7 列:PL/SQL:语句被忽略

它在 oracle 报告方法中正常工作。

关于这个问题的任何想法。

This is my sp  
PROCEDURE pop_rpt_tbl (
      p_pro_id   IN       NUMBER,
      p_agr     IN        NUMBER,
      p_prd       IN       NUMBER,
      p_group_id     IN     NUMBER,
      x_api_status   OUT      VARCHAR2,
      x_api_msg      OUT      VARCHAR2
   ); 

当我将其作为 PL/SQL 执行时,我将包名.pop_rpt_tbl 作为文件名,将可执行文件作为包名。

【问题讨论】:

你应该发布相关的代码...... 【参考方案1】:

当您创建要作为并发请求运行的打包过程时,您应该将可执行文件定义为 PL/SQL,并将 schema.package.procedure 指定为可执行文件名。

接下来,打包过程的前两个参数必须errbuf OUT VARCHAR2, retcode OUT NUMBER。并发进程期望这一点;你自己的论点应该在前两个之后。因此,原型打包过程规范类似于:

  PROCEDURE create_manual_batch (
    errbuf OUT VARCHAR2,
    retcode OUT NUMBER,
    p_part_id IN VARCHAR2,
    p_quote_line_id IN VARCHAR2,
    p_parent_id IN VARCHAR2 DEFAULT '0');

您可以在代码中使用errbufrecode 将有用的信息发送回应用程序。您可以将错误消息字符串传递给errbuf,它将写入日志文件,并且您可以在程序中设置 retcode 以在 EBS 并发请求表单中显示成功或失败或错误:

0 = 正常 1 = 警告 2 = 错误

【讨论】:

感谢您的回复,我做了您在这里提到的一切.. 更改了可执行文件名称和过程..首先我遇到了执行权限不足等错误。然后我授予许可。我仍然有这个问题。 @user361045 您不必更改可执行文件名称,我只是举个例子。在您的情况下,您的可执行文件名为“pop_rpt_tbl”。你在什么模式下创建了你的程序?应用?还是其他模式?如果您没有在 APPS 中创建您的过程,那么您将需要“GRANT EXECUTE ON pop_rpt_tbl TO APPS”。当您将可执行文件名列为“myschema.pop_rpt_tbl”时,您还应该指定架构名称。

以上是关于Oracle并发编程执行方法的主要内容,如果未能解决你的问题,请参考以下文章

Java并发编程线程间协作(上)

并发编程简介

并发编程

多线程并发编程

多线程并发编程

并发编程系列之什么是并发协同?