[Oracle] PL/SQL: Utilizzare i cursori

Rispondi
Roberto
Amministratore
Messaggi: 160
Iscritto il: 19/12/2009, 19:30

[Oracle] PL/SQL: Utilizzare i cursori

Messaggio da Roberto »

Per selezionare una riga da una tabella di un database è possibile utilizzare i cursori che sono un'alternativa a SELECT INTO.

Codice: Seleziona tutto

DECLARE
    CURSOR cursore IS
        SELECT nome, cognome, email
        FROM dipendente
        WHERE id_dipendente = &id_dipendente;
    
    dip_nome roberto.dipendente.nome%TYPE;
    dip_cognome roberto.dipendente.cognome%TYPE;
    dip_email roberto.dipendente.email%TYPE;
BEGIN

    OPEN cursore;
    FETCH cursore INTO dip_nome, dip_cognome, dip_email;
    IF cursore%NOTFOUND THEN
        RAISE NO_DATA_FOUND;
    ELSE
        FETCH cursore INTO dip_nome, dip_cognome, dip_email;
        IF cursore%FOUND THEN
            RAISE TOO_MANY_ROWS;
        ELSE
            DBMS_OUTPUT.PUT_LINE('Dipendente: ' || dip_nome || ' ' || dip_cognome || ' - ' || dip_email);
        END IF;
    END IF;
    CLOSE cursore;
    
    EXCEPTION
    WHEN NO_DATA_FOUND THEN
        DBMS_OUTPUT.PUT_LINE('Non esiste nessun dipendente con il dato ID');
    WHEN TOO_MANY_ROWS THEN
        DBMS_OUTPUT.PUT_LINE('Esistono piu'' dipendenti con il dato ID');
END;
In questo esercizio utilizziamo un cursore per memorizzare i dati relativi ad un dipendente cercato tramite ID.

Roberto Basile
Rispondi