【发布时间】:2017-04-10 20:04:40
【问题描述】:
我试图在内循环结束后引发一个异常并继续外循环我得到以下错误:
第 29 行出现错误:
ORA-06550:第 29 行,第 6 列:
PLS-00103:在预期以下情况之一时遇到符号“例外”:
( begin case 声明 end exit for goto if loop mod null pragma raise return select update while with
这是我的代码:
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 上使用 SQLplus Oracle 11gR2
【问题讨论】:
标签: sql oracle for-loop exception plsql