[Oracle] PL/SQL: Gestire un intero Record con i cursori

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

[Oracle] PL/SQL: Gestire un intero Record con i cursori

Messaggio da Roberto »

Se abbiamo la necessità di gestire un'intera riga estratta da una query su una tabella e non soltanto un sottoinsieme di colonne, è possibile farlo utilizzando l'attributo %ROWTYPE ed i cursori:

Codice: Seleziona tutto

DECLARE
    CURSOR cursore IS
        SELECT *
        FROM dipendente
        WHERE id_dipendente = &id_dipendente;
        
    dip_record roberto.dipendente%ROWTYPE;
BEGIN
    OPEN cursore;
    FETCH cursore INTO dip_record;
    IF cursore%FOUND THEN
        DBMS_OUTPUT.PUT_LINE('Trovato il seguente dipendente: ' || dip_record.nome || ' ' || dip_record.cognome || ' - ' || dip_record.email);
    ELSE
        DBMS_OUTPUT.PUT_LINE('Nessun dipendente trovato con l''ID selezionato');
    END IF;
    CLOSE cursore;
    EXCEPTION
        WHEN NO_DATA_FOUND THEN
            DBMS_OUTPUT.PUT_LINE('Nessun dipendente trovato con l''ID selezionato');
END;
L'attributo %ROWTYPE rappresenta pertanto un'intera riga ed ogni colonna viene espressa sottoforma di variabile che a sua volta eredita il tipo dalle colonne della tabella originaria e in questo modo non c'e' bisogno di dichiararle singolarmente.

Roberto Basile
Rispondi