L7 Ex 1
Écrivez un bloc PL / SQL contenant une procédure qui modifie la table STUD comme suit:
– affiche le nombre d’ étudiants du tableau STUD
– supprime les étudiants de la spécialisation avec le code 21 (DELETE).
– affiche le nombre d’ étudiants présents dans le tableau.
DECLARE -- declaratii bloc
PROCEDURE sterg21 IS -- inceput procedura
numar NUMBER; -- declaratii procedura
BEGIN
SELECT COUNT(*) INTO numar FROM stud;
DBMS_OUTPUT.PUT_LINE('Inainte: ' || numar);
DELETE FROM STUD WHERE CODS = 21;
SELECT COUNT(*) INTO numar FROM stud;
DBMS_OUTPUT.PUT_LINE('Dupa: ' || numar);
ROLLBACK; -- altfel se modifica baza de date
END sterg21; -- sfarsit procedura
BEGIN -- inceput parte executabila bloc
sterg21();
END; -- sfarsit bloc
L7 Ex 2
Écrivez une procédure stockée qui supprime de la table STUD les étudiants de la spécialisation avec le code 21 (DELETE). Cette procédure sera utilisée par un bloc PL / SQL qui:
– affiche le nombre d’ étudiants du tableau
– appelle la procédure stockée pour supprimer les étudiants de la spécialisation avec le code 21.
– affiche le nombre d’élèves présents dans le tableau.
CREATE OR REPLACE PROCEDURE sterg21 IS -- inceput procedura
BEGIN
DELETE FROM STUD WHERE CODS = 21;
END sterg21; -- sfarsit procedura
DECLARE
numar NUMBER; -- declaratii bloc
BEGIN
SELECT COUNT() INTO numar FROM stud;
DBMS_OUTPUT.PUT_LINE('Inainte: ' || numar);
DELETE FROM STUD WHERE CODS = 21;
sterg21();
SELECT COUNT() INTO numar FROM stud;
DBMS_OUTPUT.PUT_LINE('Dupa: ' || numar);
ROLLBACK; -- altfel se modifica baza de date
END; -- sfarsit bloc
L7 Ex 3
Modifier le bloc de 2 pour qu’il contienne une fonction qui affiche le nombre d’étudiants d’une spécialisation reçus en paramètre (son code)
L7 Ex 4
Modifiez le bloc de 3 en supprimant la fonction et en la transformant en fonction stockée
L7 Ex 5
Modifier la procédure de 2 pour que le nombre initial et final d’étudiants soit calculé par la procédure et retournés en 2 paramètres de type OUT, les valeurs étant affichées par le bloc qui appelle la procédure.
L7 Ex 6?
Identique à 5 mais les deux paramètres sont de type IN OUT.
Specializare
CREATE
OR REPLACE FUNCTION SPECIALIZAREA (cod_stud INTEGER) RETURN VARCHAR2 IS V_SPEC SPEC.NUME % TYPE;
BEGIN
SELECT
SPEC.NUME INTO V_SPEC
FROM
STUD,
SPEC
WHERE
STUD.CODS = SPEC.CODS
AND STUD.MATR = cod_stud;
RETURN V_SPEC;
EXCEPTION WHEN NO_DATA_FOUND THEN RETURN 'Etudiant absent';
WHEN OTHERS THEN RETURN 'Exception';
END SPECIALIZAREA;
SELECT NUME, SPECIALIZAREA(MATR)
FROM STUD;
NUME | SPECIALIZAREA(MATR) |
---|---|
GEORGE | MATEMATICA |
VASILE | MATEMATICA |
MARIA | MATEMATICA |
ION | GEOGRAFIE |
STANCA | GEOGRAFIE |
ALEX | GEOGRAFIE |
ELENA | GEOGRAFIE |
ADRIAN | ISTORIE |
FLOREA | ISTORIE |
OANA | ISTORIE |
MARIUS | ISTORIE |
VOICU | ISTORIE |