Skip navigation

Tábla módosítása kurzorral

FOR UPDATE, CURRENT OF

Az explicit kurzor deklarációjában az alkérdés után megadhatjuk, hogy a kurzorral történő feldolgozás során mely mezőket szeretnénk módosítani.

CURSOR kurzornév IS alkérdés FOR UPDATE oszloplista NOWAIT;

Ha a NOWAIT is szerepel a kurzor végén, akkor ha a kérdéses sort másik tranzakció zárolta, nem fog várakozni a módosítással, hibajelentéssel tovább fut a program.

Amikor a kurzorral feldolgozunk sorokat, akkor egy UPDATE utasítás WHERE záradékában a CURRENT OF kulcsszóval és a kurzor nevével megadhatjuk, hogy a  módosítás csak arra a sorra vonatkozzon, ahol a kurzor áll.

Példa

DECLARE
    CURSOR partner_update(p_azon CHAR) IS
        SELECT kiallt_szamlak_db
        FROM DEMO.vevo
        WHERE partner_id = p_azon
        FOR UPDATE OF kiallt_szamlak_db NOWAIT;
    darab DEMO.vevo.kiallt_szamlak_db%TYPE;
BEGIN
    OPEN partner_update('&partner_azon');
    FETCH partner_update
    INTO darab;

    UPDATE DEMO.vevo
    SET kiallt_szamlak_db = darab + 1
    WHERE CURRENT OF partner_update;
END;