PLS-00103: Обнаружен символ «КОНЕЦ» при ожидании одного из следующих событий:. ; Символ ";" был заменен на "КОНЕЦ", чтобы продолжить - PullRequest
0 голосов
/ 17 июня 2020

Я написал следующую программу:

create or replace procedure ADDPHONE(IDPELATH  in number,IDTHLEFWNO in number )
is
cursor cursor_number is select id_pelath  ,TelephoneNumber from PhoneNumbers
where id_pelath>2;
more_than_two_numbers exception;
begin
open cursor_number ;
fetch cursor_number into IDPELATH;
if id_pelath%FOUND then raise more_than_two_numbers
end if;
close cursor_number;
exception
when more_than_two_numbers then 
raise_application_error('Error');
END;
/

При запуске выдает следующую ошибку:

PLS-00103: Encountered the symbol "END" when expecting one of the following:     . ; 
The symbol ";" was substituted for "END" to continue.  

Не могли бы вы помочь мне найти ошибку?

1 Ответ

0 голосов
/ 17 июня 2020

В процедуре имеется несколько проблем.

  1. Входные параметры никогда не используются в теле.
  2. Курсор объявлен для выборки двух, но оператор FETCH извлекает только один.
  3. Неправильное использование raise_application_error, для этого требуются два входных аргумента.

Я изменил код, который должен выполнять эту работу,

 CREATE or REPLACE procedure ADDPHONE(IDPELATH  in number,IDTHLEFWNO in number)
is

    lv_cnt number(10):=0;
    more_than_two_numbers exception;

BEGIN 

    select COUNT(1) INTO lv_cnt 
    from PhoneNumbers
    where id_pelath  = IDPELATH
    and TelephoneNumber = IDTHLEFWNO;

    if (lv_cnt > 2) then 
        raise_application_error(-20001,'Error - More than two Numbers ');
    end if;

EXCEPTION
        WHEN OTHERS THEN
           raise_application_error(-20002,'An error was encountered - '||SQLCODE||' -ERROR- '||SQLERRM);
    END ADDPHONE;


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