PL / SQL "неправильное число или типы аргументов" и "оператор игнорируется" - PullRequest
0 голосов
/ 23 мая 2018

Я получаю неверное число или типы аргументов при вызове моей процедуры, а оператор игнорирует ошибки.

Вот моя процедура

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

Не понимаю, почему я продолжаю получать это сообщение об ошибке?Пожалуйста, любой ответ будет полезен, спасибо всем.

1 Ответ

0 голосов
/ 23 мая 2018

Ваша процедура ожидает параметры, они являются обязательными (и вы объявили их "in / out").

declare

  l_runId number;
  l_runCheck FSS_RUN_TABLE%rowtype;

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

Но меня беспокоит сам код - чего вы пытаетесь достичь?Почему вы разделили блоки исключений?Вы можете оставить один и управлять всеми исключениями там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...