語句塊結構
包含三部分:聲明部分、執行部分和異常部分,其中執行部分是必須的,聲明和異常部分是可選的。
DECLARE
--聲明語句
BEGIN
--執行語句
EXCEPTION
--異常語句
END;
oracle 語句塊,沒有continue功能,可以用goto 實現:
下午寫的一個簡單的語句塊功能:
create table tmp_fjx
(
MPOLICYNO CHAR(15),
POLICYNO CHAR(15),
CLASSCODE CHAR(6),
BEGINDATE DATE
);
DECLARE
MPOLICYNO CHAR(15);
POLICYNO CHAR(15);
CLASSCODE CHAR(6);
BEGINDATE DATE;
TMP_POLICYNO CHAR(15);
CURSOR c_policyno IS
select b.policyno mpolicyno,b.policyno,b.classcode,b.begdate
from riskcon a,riskcon b
where a.policyno=b.policyno
and a.appf='1' and b.appf='2'
union
select b.policyno mpolicyno,b.policyno,b.classcode,b.begdate
from appnext a ,riskcon b
where a.policyno!=a.mpolicyno and length(a.policyno)=15 and length(a.mpolicyno)=15
and a.policyno=b.policyno and a.classcode=b.classcode and b.appf='2'
order by begdate desc;
BEGIN
TMP_POLICYNO :='';
OPEN c_policyno;
LOOP
<<next>>
FETCH c_policyno INTO MPOLICYNO,POLICYNO,CLASSCODE,BEGINDATE;
EXIT WHEN c_policyno%NOTFOUND;
IF(MPOLICYNO != TMP_POLICYNO) THEN
insert into tmp_fjx values(MPOLICYNO,POLICYNO,CLASSCODE,BEGINDATE);
TMP_POLICYNO := MPOLICYNO;
ELSE
GOTO next;
END IF;
END LOOP;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
ROLLBACK;
RAISE;
END