RZOLVARE EXERCITIU ZODII declare cursor distributie_zodie is select nume_zodie, count(*) distributie from zodiac z join utilizatori u on to_date(to_ch

Documente similare
Laborator 7: PROIECTAREA BAZELOR DE DATE SUBPROGRAME in PL/SQL (partea I - proceduri) Un subprogram este un bloc PL/SQL cu nume (spre deosebire de blo

Laborator 8: PROIECTAREA BAZELOR DE DATE SUBPROGRAME in PL/SQL (partea II - functii) Un subprogram este un bloc PL/SQL cu nume (spre deosebire de bloc

PHP (II)

Proceduri stocate Syntax: CREATE PROCEDURE <Name> type1,...] AS -- secventa de comenzi SQL GO O procedura stocata se ruleaza cu EXEC: EXEC <N

proiectarea bazelor de date

Managementul Resurselor Umane

PowerPoint Presentation

Microsoft Word - Curs 11 - PHP.doc

Mai multe despre optimizare

Baze de date-Anul 2 (semestrul 2)

Microsoft Word - Curs_07.doc

Baze de date

PowerPoint Presentation

Baze de date - Anul 2 Laborator 8 Limbajul de definire a datelor (LDD) (partea I) În general, instrucţiunile LDD sunt utilizate pentru definirea struc

Laborator5_SQL_an2

Laborator02

Metode avansate de gestiune a documentelor și a sistemelor de calcul - LABORATOR 1 -

Baze de date - Anul 2 Laborator 9 Limbajul de definire a datelor (LDD) - II : Definirea vizualizărilor, secvenţelor, indecşilor, sinonimelor, tabelelo

PowerPoint Presentation

ADRIAN TRIF BAZE DE DATE APLICAŢII ACCESS UTPRESS Cluj-Napoca, 2019 ISBN

PowerPoint Presentation

Utilizare Internet

proiectarea bazelor de date

PowerPoint Presentation

Declararea variabilelor

Aggregating Data

PowerPoint Presentation

PowerPoint Presentation

1 Lucrarea nr. 8 - Structuri de date de tip liste sortate O listă sortată reprezintă un aranjament al înregistrărilor din cadrul listei în funcţie de

Metode avansate de gestiune a documentelor și a sistemelor de calcul - curs 1 -

Baze de date-Anul 2

Matrici și vectori în VBA În VBA, o matrice este un grup de variabile de același tip. De ce ar trebui să utilizați o matrice? Presupunem că ați vrut s

ALGORITMII ŞI REPREZENTAREA LOR Noţiunea de algoritm Noţiunea de algoritm este foarte veche. Ea a fost introdusă în secolele VIII-IX de către Abu Ja f

Top

Database Management Systems Cap 2. Structured Query Language (1)

Manual de utilizare Set volan și pedale MG7402

PowerPoint Presentation

INTREBARI FRECVENTE SI MANUAL DE UTILIZARE hub.sendsms.ro

PowerPoint Presentation

PowerPoint Presentation

aplicatii java

Metode API - integrare FGO v.2.5 Cuprins ISTORIC VERSIUNI... 2 INTRODUCERE... 2 APELARE... 4 NOMENCLATOARE... 4 FACTURA... 5 EMITERE... 5 PRINT... 6 S

Metode API - integrare FGO v.2.8 Cuprins ISTORIC VERSIUNI... 2 INTRODUCERE... 2 APELARE... 4 NOMENCLATOARE... 4 FACTURA... 4 EMITERE... 4 PRINT... 6 S

Microsoft Word - Fisa disciplinei BD_I_IE doc

PowerPoint Presentation

2

Microsoft Word - BD4_Curs11.doc

Ingineria Sistemelor de Programare

ALGORITHMICS

Ingineria Sistemelor de Programare

User guide

Algoritmi elementari Metode de căutare secvenţială binară Metode de ordonare metoda bulelor metoda inserţiei metoda selecţiei metoda numărării Intercl

Modul Modbus ASCII SISTEME DE COMUNICATIE CURS 5 - Constantinescu Catalin Atunci cand se foloseste modul MODBUS ASCII fiecare octet din mesaj

Object Oriented Programming

PROIECT DIDACTIC Clasa a VII-a Informatică și TIC

ALGORITMICĂ. Seminar 3: Analiza eficienţei algoritmilor - estimarea timpului de execuţie şi notaţii asimptotice. Problema 1 (L) Să se determine număru

Utilizare Internet

ep0117

Addendum Syllabus 6 Microsoft Access 2016 REF Syllabus 6.0 Cunoașterea domeniilor în care se utilizează bazele de date Datorită potenţialului ma

Limbaje de programare Pointeri. Alocare dinamică (continuare) 26 noiembrie 2012

III. Tablouri (Arrays) și Clustere

Prezentarea calculatorului

DJV-COM 19 Octombrie 2011 Accesul la datele sistemei de la distanță a contului de energie a Compania DJV-COM Dacă aveţi instalată sistema de administr

Paradigme de programare

Textul si imaginile din acest document sunt licentiate Attribution-NonCommercial-NoDerivs CC BY-NC-ND Codul sursa din acest document este licentiat Pu

Prezentarea calculatorului

Информационная система персонализации, печати и учета документов об образовании

Utilizarea Internetului in Afaceri FSEGA, UBB Lect.univ.dr. Daniel Mican LABORATOR 4. Dezvoltarea site-urilor si blog-uri

Microsoft Word - lab_access.doc

Metode API - integrare FGO v.3.0 Cuprins ISTORIC VERSIUNI... 2 INTRODUCERE... 2 APELARE... 4 NOMENCLATOARE... 4 FACTURA... 4 EMITERE... 4 PRINT... 6 S

GT-100IP InternetPhone [VoIP] Ghidul Utilizatorului (V1.0)

Curs 3 Permutari cu repetitie. Combinari. Algoritmi de ordonare si generare

Raportarea serviciilor de dializă la nivel CNAS

Ghid utilizare aplicație PARKING BUCUREȘTI Aplicație PARKING BUCUREȘTI 1

Carrier Pidgeon Protocol

tehnologii web

Addendum Syllabus 6 Microsoft Word 2016 REF Syllabus 6.0 Crearea unui document nou pe baza unor șabloane disponibile local sau online Microsoft

Slide 1

Microsoft PowerPoint - ImplementareLimbaj [Read-Only] [Compatibility Mode]

aplicatii java

Slide 1

Informare privind prelucrarea datelor cu caracter personal Începând cu 25 mai 2018 Regulamentul 679/27-apr-2016 privind protecția persoanelor fizice î

PowerPoint Presentation

Web Social FSEGA, UBB Lect.univ.dr. Daniel Mican LABORATOR 2. Dezvoltarea blogurilor prin intermediul WordPress.com PREZE

REALIZAREA UNUI SISTEM CU COMANDA PROGRAMATĂ. EXEMPLU SCOPUL LUCRĂRII Parcurgerea etapelor de proiectare HW şi SW a unui sistem cu comandă programată

EXCEL FĂRĂ SECRETE Grafice şi diagrame

Ghid de conectare rapidă Cartela Internet Vodafone VMC R9.4 Cartela Internet Vodafone funcţionează cu aplicaţia Vodafone Mobile Connect

1. Operatii cu matrici 1 Cerinte: Sa se realizeze functii pentru operatii cu matrici patratice (de dimensiune maxima 10x10). Operatiile cerute sunt: A

A.E.F. - suport laborator nr.10 sem.ii Analiza stării de contact între elemente 3D În acest laborator sunt atinse următoarele aspecte: analiza contact

1

Microsoft Word - Excel_3.DOC

Laborator 9: Fire de execuţie Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 20 noiembrie 2011

{LINGO} Specificațiile produsului: - Dimensiune: 61 x 18 x 8 mm - greutate: 8,6 g - rază: 10 m -capacitatea și tipul bateriei: 90 mah, baterie polimer

Transcriere:

RZOLVARE EXERCITIU ZODII declare cursor distributie_zodie is select nume_zodie, count(*) distributie from zodiac z join utilizatori u on to_date(to_char(u.data_nastere, 'DD-MM'), 'DD-MM') between to_date(z.data_inceput, 'DD-MM') and to_date(z.data_sfarsit, 'DD-MM') group by nume_zodie; cursor stud(zodie varchar2) is select nume, prenume, data_nastere from utilizatori u join zodiac z on to_date(to_char(u.data_nastere, 'DD-MM'), 'DD-MM') between to_date(z.data_inceput, 'DD-MM') and to_date(z.data_sfarsit, 'DD-MM') where z.nume_zodie = zodie; begin for v_zodie in distributie_zodie loop dbms_output.put_line(v_zodie.nume_zodie ' ' v_zodie.distributie); for rand in stud(v_zodie.nume_zodie) LOOP dbms_output.put_line(rand.nume ' ' rand.prenume ' ' rand.data_nastere ); end loop; end loop; end; Exercitii cu functii si TRIGGERE set serveroutput on; drop table evaluare; create table evaluare (

id number not null primary key, nume varchar2(30) not null, curs varchar2(30) not null, nota number not null, data date ) CREATE SEQUENCE contor MINVALUE 1 MAXVALUE 100 START WITH 1 INCREMENT BY 1 CACHE 30; insert into evaluare values(contor.nextval,'ionescu', 'SGBD', 7, '30.apr.2019' ); insert into evaluare values(contor.nextval,'popescu', 'SGBD', 8, '30.apr.2019' ); insert into evaluare values(contor.nextval,'angelescu', 'SGBD', 9, '15.apr.2019' ); insert into evaluare values(contor.nextval,'mirel', 'SGBD', 7, '10.apr.2019' ); insert into evaluare values(contor.nextval,'gigi', 'SGBD', 5, '02.06.2019' ); insert into evaluare values(contor.nextval,'mitica', 'SGBD', 9, '07.06.2019' ); insert into evaluare values(contor.nextval,'bibi', 'SGBD', 9, '07.05.2019' );

insert into evaluare values(contor.nextval,'popescu', 'SGBD', 7, '09.05.2019' ); insert into evaluare values(contor.nextval,'angelescu', 'SGBD', 10, sysdate); insert into evaluare values(contor.nextval,'popescu', 'SGBD', 6, sysdate ); insert into evaluare values(contor.nextval,'bibi', 'SGBD', 7, sysdate ); select * from evaluare; --exercitiu cu exceptii --Pentru tabela Evaluare sa se creeze o functie care afiseaza pentru un student dat ultima nota obtinuta CREATE OR REPLACE FUNCTION nota_recenta_student( p_nume IN evaluare.nume%type) RETURN VARCHAR2 AS nota_recenta INTEGER; mesaj counter VARCHAR2(32767); INTEGER; BEGIN SELECT nota INTO nota_recenta FROM (SELECT nota FROM evaluare WHERE nume like p_nume ORDER BY data DESC ) WHERE rownum <= 1;

mesaj := 'Cea mai recenta nota a studentului ' p_nume ' este ' nota_recenta '.'; RETURN mesaj; EXCEPTION WHEN no_data_found THEN SELECT COUNT(*) INTO counter FROM evaluare WHERE nume like p_nume; IF counter = 0 THEN mesaj := 'Studentul ' p_nume ' nu exista in baza de date.'; -- raise_application_error (-20001,'Studentul ' p_nume ' nu exista in baza de date.'); -- se poate arunca o exceptie ca cea de sus sau se poate returna un mesaj de eroare return mesaj; END IF; END nota_recenta_student; --testare functie. Functia se poate folosi direct intr-o comanda SELECT. Se va interoga tabela DUAL pentru a obtine o singura inregistrare. select nota_recenta_student('popescu') from dual; --student existent in baza de date select nota_recenta_student('marcel') from dual; --student inexistent in baza de date --Daca se interogheaza tabela Evaluare se vor parcurge toate inregistrarile din tabela si se obtine acelasi rezultat de atatea ori cate inregistrari avem in tabela select nota_recenta_student('popescu') from evaluare; --se parcurg toate inregistrarile din tabela evaluare si se aplica functia dupa parametrul Popescu --exercitiu cu triggere CREATE OR REPLACE TRIGGER marire_nota before UPDATE OF nota ON evaluare -- aici se executa numai cand modificam nota, intainte (BEFORE) de a o modifica(update)!

FOR EACH ROW --pentru fiecare rand in parte se declanseaza trigger-ul declare BEGIN dbms_output.put_line('nume Student: ' :OLD.nume ' are vechea nota ' :OLD.nota ' modificam cu nota ' :NEW.nota); -- observati ca aveti acces si la alte campuri, nu numai la cele modificate -- totusi nu permitem sa facem update daca valoarea este mai mica (conform regulamentului universitatii): IF (:OLD.nota>=:NEW.nota) THEN :NEW.nota := :OLD.nota; dbms_output.put_line('nu s-a facut modificarea notei'); ELSE dbms_output.put_line('s-a facut modificarea notei'); end if; END; drop trigger marire_nota; -- se executa daca vrem sa stergem trigger-u update evaluare set nota =8 where id in (1,2,3,4); --testam declansarea trigger-ului select valoare from note where id in(1,2,3,4); --verificam modificarile in baza de date rollback; -- Exercitiul doi cu triggere --select user from dual; --drop table note_test; create table note_test as select * from evaluare; CREATE OR REPLACE TRIGGER del_note BEFORE delete ON note_test BEGIN

RAISE_APPLICATION_ERROR ( num => -20001, msg => 'can''t touch this'); END; --Triggerul arunca o exceptie prin raise_application_error cu un numar alocat si un mesaj de eroare drop trigger del_note; --se executa cand vrem sa stergem trigger-ul select count(*) from note_test; select * from note_test; delete from note_test where id between 1 and 10; rollback;