我试图内循环结束后,引发异常,并继续外环我得到以下错误之前:EXCEPTION在循环结束
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:我在Ubuntu 16.04
我想第一个循环继续例外,这就是为什么后我把END LOOP异常后 –
对不起兄弟我的坏 –
通过声明顶部的方式,'i'和'j'变量没有使用。 “我在......循环”结构隐式声明它自己的。 –