Codice: Seleziona tutto
CREATE OR REPLACE PROCEDURE updatingRows(id_area IN NUMBER, livelloContratto IN NUMBER) AS
dip_count NUMBER := 0;
dip roberto.dipendente%ROWTYPE;
area_nome roberto.area.nome%TYPE;
BEGIN
SELECT COUNT(*)
INTO dip_count
FROM dipendente
WHERE area = id_area;
IF dip_count = 1 THEN
SELECT *
INTO dip
FROM dipendente
WHERE area = id_area;
IF dip.livello_contratto != livelloContratto THEN
dip.livello_contratto := livelloContratto;
UPDATE dipendente
SET ROW = dip
WHERE area = id_area;
SELECT nome
INTO area_nome
FROM area
WHERE id_area = updatingRows.id_area;
DBMS_OUTPUT.PUT_LINE('Il manager ' || dip.cognome || ' adesso ha un contratto di livello ' || updatingRows.livelloContratto);
ELSE
DBMS_OUTPUT.PUT_LINE('Il manager ' || dip.cognome || ' ha gia'' un contratto di livello ' || updatingRows.livelloContratto);
END IF;
ELSIF dip_count > 1 THEN
DBMS_OUTPUT.PUT_LINE('Per questa Area sono associati piu'' manager');
ELSE
DBMS_OUTPUT.PUT_LINE('Non ci sono manager associati a questa Area');
END IF;
END;
Roberto Basile