PL/SQL 語句塊初次接觸(遊標使用,實現loop的continue)

語句塊結構

 

       包含三部分:聲明部分、執行部分和異常部分,其中執行部分是必須的,聲明和異常部分是可選的。

 

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章