Я пытаюсь поднять ИСКЛЮЧЕНИЕ после окончания внутреннего цикла и продолжить внешний цикл я получаю следующее сообщение об ошибке:ИСКЛЮЧЕНИЯ в до конца цикла
ERROR at line 29:
ORA-06550: line 29, column 6:
PLS-00103: Encountered the symbol "EXCEPTION" when expecting one of the following:
(begin case declare end exit for goto if loop mod null pragma raise return select update while with << continue close current delete fetch lock insert open rollback savepoint set sql execute commit forall merge pipe purge
Вот мой код:
DECLARE
TOTAL_ZERO EXCEPTION;
client_rec E_CLIENT%ROWTYPE;
commande_rec E_COMMANDE%ROWTYPE;
total_client integer:=0;
total_commande integer:=0;
i integer:=1;
j integer:=1;
Nombre_Commande integer:=0;
Total_paye E_COMMANDE.TOTAL%TYPE:=0;
BEGIN
select count (*) into total_commande from E_COMMANDE;
select count (*) into total_client from E_CLIENT;
FOR j IN 1 .. total_client LOOP
select * into client_rec from E_CLIENT where NO=j;
FOR i IN 1 .. total_commande LOOP
select * into commande_rec from E_COMMANDE where NO=i;
IF EXTRACT(YEAR FROM commande_rec.DATE_COMMANDE)=2004 THEN
IF commande_rec.CLIENT_NO = j THEN
Nombre_Commande:=Nombre_Commande+1;
Total_paye := Total_paye + commande_rec.TOTAL;
END IF;
END IF;
END LOOP;
IF Nombre_Commande=0 THEN RAISE TOTAL_ZERO; END IF;
dbms_output.put_line('Numero client ' || client_rec.NO || ' Nom client ' || client_rec.NOM || ': ');
dbms_output.put_line('total : ' || Total_paye || ' ' || 'Nombre_Commande' || Nombre_Commande);
EXCEPTION
WHEN TOTAL_ZERO THEN
dbms_output.put_line('---------ERROR----------');
Nombre_Commande:=0;
Total_paye:=0;
END LOOP;
END;
/
PS: Я использую Sqlplus Oracle 11gR2 на Ubuntu 16.04
Я хочу, чтобы первый цикл, чтобы продолжить после того, как исключение, вот почему я поставил END LOOP после исключения –
К сожалению, братан моего плохого –
Кстати, в '' i' и j' переменных вы объявляете в верхнем не используются. Конструкция 'for i in ... loop' неявно объявляет о себе. –