首页 > 解决方案 > PL/SQL“错误数量或类型的参数”和“语句被忽略”

问题描述

在调用我的过程和语句忽略错误时,我不断收到错误数量或类型的参数。

这是我的程序

Procedure runCheck(p_runId    in out number,
                     p_runCheck in out FSS_RUN_TABLE%rowtype) is
    v_runId number := 0;

  Begin
    Begin
      select *
        into p_runCheck
        from FSS_RUN_TABLE
       where RUNOUTCOME = 'SUCCESS'
         and Trunc(RUNEND) = Trunc(sysdate);

    Exception
      when NO_DATA_FOUND then
        p_runId := RUNLOG_SEQ.NEXTVAL;
        insert into FSS_RUN_TABLE
          (RUNID, RUNSTART, RUNEND, RUNOUTCOME, REMARKS)
        values
          (p_runId, sysdate, null, null, 'RUN START');
    End;
  Exception
    when others then
      select RUNID
        into v_runId
        from FSS_RUN_TABLE
       where Trunc(RUNSTART) = Trunc(sysdate);
      update FSS_RUN_TABLE
         set RUNEND     = sysdate,
             RUNOUTCOME = 'FAILED',
             REMARKS    = 'RUN FAILED'
       where RUNID = v_runId;
  End;

这是我执行此过程的方式

Begin
       PKG_FSS_SETTLEMENT.runCheck;
End;

我的 FSS_RUN_TABLE 内容 5 列分别是 RUNID、RUNSTART、RUNEND、RUNOUTCOME、REMARKS

不明白为什么我一直收到此错误消息?请任何答案都会有帮助,谢谢大家。

标签: oracleplsql

解决方案


您的程序需要参数,它们是强制性的(并且您将它们声明为“输入/输出”)。

declare

  l_runId number;
  l_runCheck FSS_RUN_TABLE%rowtype;

Begin
   PKG_FSS_SETTLEMENT.runCheck(
     p_runId => l_runId,
     p_runCheck => l_runCheck);
End;

但我担心代码本身——你想达到什么目的?为什么要分开异常块?您可以留下一个,并在那里管理所有异常。


推荐阅读