Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

oracle prosedür no_data_found exception

Konu, 'Veritabanları' kısmında oozsakarya tarafından paylaşıldı.

  1. oozsakarya

    oozsakarya Üye

    Kayıt:
    2 Nisan 2006
    Mesajlar:
    172
    Beğenilen Mesajlar:
    0
    PROCEDURE MY_CAPTAIN(PAR_TEAM_ID NUMBER)
    AS
    sql VARCHAR (5000);
    VAR_CAPTAIN NUMBER;

    TYPE bonusInvoiceType is record ( INVOICE_ID number(12), EMPLOYEE_ID number(12), BONUS_ID number(12), BONUS_DETAIL_ID number(12) );
    bonusInvoiceRow bonusInvoiceType;
    BEGIN

    FOR TEMP_TABLE IN ( SELECT * FROM LEAGUES )
    LOOP
    sql:= ' SELECT TEAM.CAPTAIN_ID AS CAPTAIN, '
    || ' FROM TEAM '
    || ' WHERE TEAM.ID =' || PAR_TEAM_ID || ' AND TEAM.LEAGUE_ID ='|| TEMP_TABLE.ID;


    EXECUTE IMMEDIATE sql INTO VAR_CAPTAIN;

    EXCEPTION
    WHEN NO_DATA_FOUND THEN
    dbms_output.PUT_LINE(' HATA: ');
    CONTINUE;
    --ELSE
    --INSERT INTO CAPTAIN (VAR_CAPTAIN);
    END LOOP;
    END;

    prosedürüm bu şekilde. eğer sql adındaki değişkene atanan sorgu çalıştırınca kayıt dönmüyorsa, no_data_found exception alıyorum. bunun için exceptionı yakalamaya çalıştım. Fakat prosedürü derlerken hata veriyor. Yapmak istediğim işte select sorgusundan kayıt dönmüyorsa bir sonraki iterationa geçmek, eğer kayıt varsa bunları insert etmek. Else yazan kısım da tabi else olmayacak ama nasıl olacak henüz üst kısmı çalıştıramadığımdan bilmiyorum ondan yorum satırı yaptım.
     
  2. oozsakarya

    oozsakarya Üye

    Kayıt:
    2 Nisan 2006
    Mesajlar:
    172
    Beğenilen Mesajlar:
    0
    exceptionlar bloğun sonunda olması gerekiyormuş

    begin
    EXECUTE IMMEDIATE sql INTO VAR_CAPTAIN;

    EXCEPTION
    WHEN NO_DATA_FOUND THEN
    end;
    gibi