Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

Similar documents
Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

Proiectarea bazelor de date # 11. PL/SQL Funcții în PL/SQL (partea a II-a) Adrian Runceanu

Versionare - GIT ALIN ZAMFIROIU

Subprograme şi pachete PL/SQL

Metrici LPR interfatare cu Barix Barionet 50 -

Proceduri stocate. Crearea procedurilor stocate. Varianta 1 În Management Studio se dă clic pe New Query ca în imaginea de mai jos: Fig.

CERERI SELECT PE O TABELA

Titlul lucrării propuse pentru participarea la concursul pe tema securității informatice

2. Setări configurare acces la o cameră web conectată într-un router ZTE H218N sau H298N

Procesarea Imaginilor

Ghid identificare versiune AWP, instalare AWP şi verificare importare certificat în Store-ul de Windows

Lucrarea de laborator nr. 4

INTEROGĂRI ÎN SQL SERVER

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

Propuneri pentru teme de licență

Proiectarea bazelor de date. PL/SQL Înregistrări și Colecții # 13. Adrian Runceanu

Auditul financiar la IMM-uri: de la limitare la oportunitate

:= 950; BEGIN DELETE FROM

La fereastra de autentificare trebuie executati urmatorii pasi: 1. Introduceti urmatoarele date: Utilizator: - <numarul dvs de carnet> (ex: "9",

Structura și Organizarea Calculatoarelor. Titular: BĂRBULESCU Lucian-Florentin

Mecanismul de decontare a cererilor de plata

[{CYCLE NOCYCLE}] [{CACHE

ACADEMIA DE STUDII ECONOMICE BUCUREŞTI FACULTATEA DE CIBERNETICĂ, STATISTICĂ ŞI INFORMATICĂ ECONOMICĂ. BUCUREŞTI Iulie 2018

PROIECT. La Baze de date. Evidența activității pentru o firmă IT. Îndrumător: ș. l. dr. ing. Mirela Danubianu. Efectuat de: Grigoriev Sergiu gr.

MS POWER POINT. s.l.dr.ing.ciprian-bogdan Chirila

INTERPRETOARE DE COMENZI

CERERI SELECT PE MAI MULTE TABELE

REVISTA NAŢIONALĂ DE INFORMATICĂ APLICATĂ INFO-PRACTIC

Universitatea George Bariţiu, Braşov

R O M Â N I A CURTEA CONSTITUŢIONALĂ

Semnale şi sisteme. Facultatea de Electronică şi Telecomunicaţii Departamentul de Comunicaţii (TC)

GHID DE TERMENI MEDIA

Arbori. Figura 1. struct ANOD { int val; ANOD* st; ANOD* dr; }; #include <stdio.h> #include <conio.h> struct ANOD { int val; ANOD* st; ANOD* dr; }

Reflexia şi refracţia luminii. Aplicaţii. Valerica Baban

Update firmware aparat foto

9. CURSOARE. Obiective. În acest Capitol, vom învăţa despre: Manipularea cursoarelor. Folosirea Cursor FOR Loops şi Nesting Cursors.

Cap.5 Normalizarea relaţiilor

Documentaţie Tehnică

Funcţii grup şi clauzele GROUP BY, HAVING. Operatorii ROLLUP şi CUBE.

ARBORI AVL. (denumiti dupa Adelson-Velskii si Landis, 1962)

Excel Advanced. Curriculum. Școala Informală de IT. Educație Informală S.A.

Modalitǎţi de clasificare a datelor cantitative

ISBN-13:

Olimpiad«Estonia, 2003

Lucrarea Nr.1. Sisteme de operare. Generalitati

CAIETUL DE SARCINI Organizare evenimente. VS/2014/0442 Euro network supporting innovation for green jobs GREENET

Capitolul 4 SUBCERERI. F. Radulescu. Curs: Baze de date - Limbajul SQL

Aspecte controversate în Procedura Insolvenţei şi posibile soluţii

5.1 Definirea datelor în SQL

O tranzacţie este o unitate logică de prelucrare

Proprietăţi obiectual-relaţionale în standardul SQL prof. dr. ing. Mircea Petrescu

X-Fit S Manual de utilizare

Subiecte Clasa a VI-a

Reţele Neuronale Artificiale în MATLAB

Tratarea excepţiilor

O bază de date (database), este o colecţie de date creată şi

Colegiul Național Calistrat Hogaș Piatra-Neamț LIMBAJUL SQL

Managementul referinţelor cu

Laborator 5: PROIECTAREA BAZELOR DE DATE CURSORI (partea a II-a)

ORARE DE EXECU}IE. Opțiunea se găseşte în MENTOR > Alte module > AdminJOBs > Orare de execuție.

Behavioral design patterns (comportamentale) ALIN ZAMFIROIU

PROCEDURA PRIVIND DECONTURILE. 2. Domeniu de aplicare Procedura se aplică în cadrul Universităţii Tehnice Cluj-Napoca

D în această ordine a.î. AB 4 cm, AC 10 cm, BD 15cm

Nume şi Apelativ prenume Adresa Număr telefon Tip cont Dobânda Monetar iniţial final

PACHETE DE PROMOVARE

Mai bine. Pentru c putem.

SAG MITTIGATION TECHNICS USING DSTATCOMS

Gruparea rezultatelor unei interogări

Tema 1 - Transferuri de date DMA intr-o arhitectura de tip Cell

EN teava vopsita cu capete canelate tip VICTAULIC

Mulțumim anticipat tuturor acelora care vor transmite critici/observații/sugestii

5.2 Interogări în SQL

Cap.4 Limbaje şi biblioteci de programare a aplicaţiilor de baze de date

Algoritmi si structuri de date ( ) Informatica Ramnicu Valcea, anul 1

Figura x.1 Ecranul de pornire al mediului de dezvoltare

9. Memoria. Procesorul are o memorie cu o arhitectură pe două niveluri pentru memoria de program și de date.

REVISTA NAŢIONALĂ DE INFORMATICĂ APLICATĂ INFO-PRACTIC

2. Setări configurare acces la o cameră web conectată într-un echipament HG8121H cu funcție activă de router

Interogarea (query), este operaţia prin care se obţin datele

Clase si obiecte. 1. Scopul lucrării. 2. Clase simple

The First TST for the JBMO Satu Mare, April 6, 2018

Dispozitive Electronice şi Electronică Analogică Suport curs 02 Metode de analiză a circuitelor electrice. Divizoare rezistive.

Baze de date distribuite și mobile

Itemi Sisteme de Operare

Managementul Proiectelor Software Metode de dezvoltare

Capitolul IV Utilizarea bazelor de date în Internet

6. Excepţii şi aserţiuni. 6. Excepţii şi aserţiuni

VIRTUAL INSTRUMENTATION IN THE DRIVE SUBSYSTEM MONITORING OF A MOBIL ROBOT WITH GESTURE COMMANDS

Baze de date - Lucrare de laborator 3 -

Subinterogari SELECT salariul FROM angajaţi WHERE nume= Ionescu SELECT nume, prenume FROM angajaţi WHERE salariul>s

Mods euro truck simulator 2 harta romaniei by elyxir. Mods euro truck simulator 2 harta romaniei by elyxir.zip

INFORMAȚII DESPRE PRODUS. FLEXIMARK Stainless steel FCC. Informații Included in FLEXIMARK sample bag (article no. M )

1. Creaţi un nou proiect de tip Windows Forms Application, cu numele MdiExample.

CAPITOLUL 4. CREAREA UNEI BAZE DE DATE PRIN COMENZI SQL

Updating the Nomographical Diagrams for Dimensioning the Concrete Slabs

Lucrarea 1 Introducere în Linux

Macrocomenzi. Figura 1. Personalizarea barei de meniuri. Se va afișa fereastra din figura 2. Figura 2. Includerea tab ului Developer.

Știinţa, Ministerul Educaţiei al Republicii Moldova

Fundamentele Programării Limbajul de programare PYTHON

Transcription:

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic Proiect nr. 154/323 cod SMIS 4428 cofinanțat de prin Fondul European de Dezvoltare Regională Investiții pentru viitorul dumneavoastră. Programul Operațional Sectorial Creșterea Competitivității Economice - POS CCE

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic Baze de date 27. Funcţii definite de utilizator

Introducere O funcție este un subprogram care acceptă parametri, poate fi apelată dintr-un program apelant şi returnează o valoare. În general, funcțiile se folosesc pentru a procesa un set de date şi returna un rezultat. Funcțiile şi procedurile sunt structuri asemănătoare. O funcție poate returna o singură valoare, în timp ce o procedură poate returna una sau mai multe valori prin intermediul parametrilor OUT. Funcțiile declarate în cadrul unui bloc sunt funcții stocate în memorie împreună cu blocul PL/SQL în care sunt declarate şi au o funcționalitate asemănătoare procedurilor. Durata lor de viață este cât a blocului şi nu pot fi apelate decât din blocul respectiv. După închiderea sesiunii, funcțiile nestocate pe server se pierd, deoarece nu au fost salvate în dicționarul bazei de date. Pentru a fi recreată o astfel de funcție, se compilează din nou, împreună cu blocul în care a fost declarată. Funcțiile pot fi folosite în blocul apelant folosind operatorul de atribuire sau în cadrul unor expresii şi condiții. Funcțiile stocate pe server sunt funcții care sunt create în dicționarul bazei de date şi pot fi accesate prin comenzi SQL ca orice obiect, dacă utilizatorul are suficiente privilegii. Parametrii unei funcții respectă aceleaşi reguli ca în cazul procedurilor.

Funcţii declarate în cadrul unui bloc PL/SQL DECLARE -- secțiunea de declarare a funcției FUNCTION function_name -- declararea numelui funcției[ parameter_name [IN OUT IN OUT] parameter_type, ] RETURN data_type IS [function _declaration_section] -- blocul funcției function _executable_section [EXCEPTION function _exception_section] END [function _name]; -- sfârşitul declarării funcției DECLARE block_variables; [EXCEPTION block_ executable_section -- blocul apelant var:=function_name[ parameters]; -- apelul funcției block exceptions] END; END; -- sfârşitul blocului apelant

Cuvinte cheie function _name este numele funcției; parameter_name reprezintă numele unui parametru formal din lista de parametri; parameter_type reprezintă tipul unui parametru formal; function _declaration_section reprezintă secțiunea de declarare de variabile pentru funcție; function _executable_section reprezintă secțiunea executabilă a funcției; function _exception_section reprezintă secțiunea de tratare a excepțiilor din cadrul funcției; block_variables - reprezintă secțiunea de declarare de variabile pentru blocul apelant; var este numele variabilei în care funcția returnează o valoare; block exceptions reprezintă secțiunea de tratare a excepțiilor în cadrul blocului apelant; IN OUT IN OUT specifică dacă parametrul poate fi referit sau modificat în interiorul sau exteriorul funcției.

Exemplu: DECLARE FUNCTION salariati (dep NUMBER) RETURN NUMBER IS nr_ang NUMBER; SELECT count(distinct id_ang) INTO nr_ang FROM angajati WHERE id_dep = dep ; RETURN nr_ang; END; DECLARE depart VARCHAR2(15); nr_dep number(2); nr_sal number(5); nr_dep:=&nr_depart; SELECT den_dep INTO depart FROM departamente WHERE id_dep=nr_dep; nr_sal:=salariati(nr_dep); dbms_output.put_line ('Departamentul' ' ' rpad(depart,15) ' ' 'are ' lpad(nr_sal, 5) ' salariati.' ); EXCEPTION WHEN NO_DATA_FOUND THEN dbms_output.put_line ('Departament inexistent'); END; END;

Funcţii PL/SQL stocate pe server Sintaxa de creare este următoarea: CREATE [OR REPLACE] FUNCTION function_name [ parameter_name [IN OUT IN OUT] parameter_type, ] RETURN variable_type [AUTHID {DEFINER CURRENT_USER}] [PRAGMA AUTONOMOUS_TRANSACTION] IS /AS [declaration_section] executable_section [EXCEPTION exception_section] END [function_name];

Cuvinte cheie function _name este numele funcției; parameter_name reprezintă numele unui parametru formal din lista de parametri; parameter_type reprezintă tipul unui parametru formal; declaration_section reprezintă secțiunea de declarare de variabile ; executable_section reprezintă secțiunea executabilă a funcției ; exception_section reprezintă secțiunea de tratare a excepțiilor ; [AUTHID {DEFINER CURRENT_USER}] - specifică dacă o funcție stocată se execută cu drepturile celui care a creat-o (valoare implicită) sau ale utilizatorului curent; [PRAGMA AUTONOMOUS_TRANSACTION] - specifică că execuția funcției suspendă tranzacția curentă, care se reia după terminarea execuției funcției, adică într-o tranzacție imbricăm altă tranzacție, cu propriile sale COMMIT sau ROLLBACK; IN OUT IN OUT specifică dacă parametrul poate fi referit sau modificat în interiorul sau exteriorul funcției.

Exemplu: CREATE OR REPLACE FUNCTION puncte(ecuson in number) RETURN number AS data_ang angajati.data_ang%type; dep number(2); sal number; com number; sal_max number; pcte number := 0; SELECT data_ang, id_dep, salariu, nvl(comision, 0) INTO data_ang, dep, sal, com FROM angajati WHERE id_ang = ecuson; IF months_between(sysdate, data_ang) > 25*12 THEN pcte := pcte + 30; END IF; SELECT max(salariu) INTO sal_max FROM angajati WHERE id_dep = dep; IF sal_max = sal THEN pcte := pcte + 20; END IF; IF com > 0 THEN pcte := pcte + 10; END IF; RETURN pcte; END puncte;

Programul apelant DECLARE pcte number; cursor c_ang IS SELECT id_ang, nume, id_dep FROM angajati; DELETE FROM temp_puncte; FOR i IN c_ang LOOP pcte := puncte(i.id_ang); INSERT INTO temp_puncte VALUES (i.id_ang, pcte, i.id_dep); END LOOP; END;

Apelul funcţiilor din comenzi SQL Odată create şi stocate în baza de date, funcțiile pot fi apelate în comenzile SQL, dar cu anumite restricții. Dacă funcția a fost deja creată în dicționarul bazei de date, nu se mai poate crea cu acelaşi nume. În acest caz, trebuie folosită comanda CREATE OR REPLACE FUNCTION şi sistemul de gestiune va înlocui în dicționar vechea funcție cu noua funcție, dar cu acelaşi nume. O altă posibilitate este ştergerea din dicționar, cu comanda: SQL> DROP FUNCTION function_name; apoi se crează din nou, cu comanda CREATE FUNCTION. Dacă funcția respectivă este definită în cadrul unui pachet, atunci ştergerea ei implică redefinirea pachetului şi eliminarea specificațiilor legate de aceasta. Daca se şterge tot pachetul se vor şterge automat toate procedurile şi funcțiile definite în cadrul lui şi nu mai este nevoie de comenzi suplimentare.

Apelul funcţiilor din comenzi SQL Funcția PUNCTE, creată anterior, care returnează numărul de puncte obținute de un angajat, în vederea întocmirii unui clasament pe departament, poate fi folosită astfel: SQL> SELECT a.den_dep, b.nume, PUNCTE(b.id_ang) punctaj FROM departamente a, angajati b WHERE a.id_dep=b.id_dep AND a.id_dep=10; SQL>SELECT a.den_dep, b.nume, PUNCTE(b.id_ang) punctaj FROM departamente a, angajati b WHERE a.id_dep=b.id_dep AND PUNCTE(b.id_ang)>=50;

Informaţii din dicţionarul bazei de date Codul sursă al procedurilor şi funcțiilor stocate se găseşte în dicționarul bazei de date, în tabela USER_SOURCE, care are următoarea structură: SQL> desc user_source Name Null? Type ------------------ -------- ---------------------- NAME TYPE LINE TEXT unde: name este numele procedurii sau funcției; type reprezintă tipul obiectului; line - este numărul liniei de cod; text este codul sursă din linia respectivă. VARCHAR2(30) VARCHAR2(12) NUMBER VARCHAR2(4000) SQL> SELECT text FROM user_source WHERE name = 'PUNCTE ORDER BY line;

Considerente asupra procedurilor şi funcţiilor În general, o procedură este folosită pentru secvențe de cod mai complexe, în timp ce o funcție este folosită în cadrul procedurii pentru calcule repetate şi mai simple. Din punct de vedere tehnic, sunt câteva mici diferențe între proceduri şi funcții: o funcție returnează totdeauna o valoare în programul apelant; o procedură nu returnează direct o valoare, dar poate întoarce mai multe valori în programul apelant, prin parametrii de tip OUT; funcțiile stocate pot fi apelate direct din comenzi SQL; procedurile stocate nu pot fi apelate direct din comenzi SQL ; funcțiile pot fi folosite în operații de atribuire, în expresii şi condiții pe clauza WHERE; procedurile nu pot fi folosite în operații de atribuire, expresii şi condiții pe clauza WHERE.

Considerente asupra procedurilor şi funcţiilor-continuare Dacă într-o procedură sau funcție apare o excepție, tratată de sistem sau definită de utilizator, controlul este preluat de secțiunea EXCEPTION sau de blocul superior, iar parametrilor de tip OUT sau IN OUT nu li se transmite nicio valoare. În acest caz, parametrii actuali din procedura sau funcția apelantă vor pastra aceeaşi valoare pe care au avut-o înainte de a se face apelul. Execuția comenzilor CREATE OR REPLACE sau DROP pentru proceduri şi funcții şi a comenzilor ALTER TABLE sau ALTER VIEW pentru tabele şi view-uri, pot modifica starea altor obiecte din baza de date cu care sunt relaționate. Sistemul de gestiune Oracle permite acordarea privilegiului de execuție asupra procedurilor si funcțiilor şi altor utilizatori, acțiune permisă proprietarului lor(userul care le-a creat) sau administratorului care are privilegiu de DBA. Comanda SQL este: SQL> GRANT EXECUTE ON procedure_name/function_name TO user_name; Stergerea privilegiului se face cu comanda REVOKE.