Oracle并发编程执行方法

时间:2012-03-20 07:52:00

标签: oracle oracle11g

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

  

原因:由于ORA-06550导致FDPSTP失败:第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 个答案:

答案 0 :(得分:2)

当您创建要作为并发请求运行的打包过程时,应将可执行文件定义为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 Concurrent Request表单中的成功或失败或错误:

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