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

Documente similare
PowerPoint Presentation

PHP (II)

PowerPoint Presentation

Microsoft Word - Curs 11 - PHP.doc

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

Mai multe despre optimizare

Microsoft Word - Curs_07.doc

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

PowerPoint Presentation

PowerPoint Presentation

proiectarea bazelor de date

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

Laborator02

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

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

PPSD

Paradigme de Programare

PowerPoint Presentation

Lucrarea nr. 2 Aplicaţii de tip client Mihai IVANOVICI 6 martie 2006 Scopul acestei lucrări este de a vă familiariza cu modulul Python socket şi cu mo

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

Baze de date-Anul 2 (semestrul 2)

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

Managementul Resurselor Umane

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

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

Baze de date

Declararea variabilelor

Microsoft Word _POO_Lab_1_Modificari_v01.htm

EXCEL FĂRĂ SECRETE Grafice şi diagrame

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

Laborator 3

Utilizare Internet

Introducere în limbajul JavaScript

Paradigme de programare

Microsoft Word - lab1_2007.doc

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

Laborator 2: Instrucţiuni Java şi lucru cu şiruri de caractere Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 18 octombrie 2011

Top

Aggregating Data

Ingineria Sistemelor de Programare

Operatorii in C Expresii Operatori aritmetici Operatori de asignare Operatori de incrementare si decrementare Operatori relationali Operatori logici O

Laborator 1 suport teoretic Mediul de dezvoltare Eclipse GLOSAR - Aplicaţie: program obţinut în urma aplicării operației BUILD asupra unui proiect (ve

A.E.F. - suport laborator nr.8 sem.ii Analiza structurală la flambaj În acest laborator sunt atinse următoarele aspecte: modalitatea de analiză la fla

Interfețe și Protocoale de Comunicații Arduino-Port Paralel Arduino. Laborator 1- Portul Paralel 1 Caracteristici generale Arduino UNO este o placă de

PowerPoint Presentation

Prezentarea calculatorului

Tablouri (continuare)

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

tehnologii web

Limbaje de Programare Curs 8 – Fisiere

Ingineria Sistemelor de Programare

Microsoft PowerPoint - UBD3-slides.ppt

Addendum Syllabus 6 Microsoft PowerPoint 2016 REF Syllabus 6.0 Crearea unei noi prezentări pe baza unor șabloane disponibile local sau online Mi

PowerPoint Presentation

A.E.F. - suport laborator nr.5 sem.ii Analiza suprafețelor prin utilizarea elementelor 2D În acest laborator sunt atinse următoarele aspecte: realizar

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

Utilizarea Internetului in Afaceri FSEGA, UBB Lect.univ.dr. Daniel Mican LABORATOR 3. Achizitionarea domeniilor web si a

proiectarea bazelor de date

Laborator - Configurarea de bază DHCPv4 pe un router Topologie Tabela de Adresare Echipame nt Interfață Adresă IP Masca de subreţea Default Gateway Ob

Object Oriented Programming

User guide

E_d_Informatica_sp_MI_2015_bar_02_LRO

A.E.F. - suport laborator nr.3 sem.ii Aplicațe privind utilizarea rețelelor 1D În acest laborator sunt atinse următoarele aspecte: realizarea schițelo

Unelte ce se regasesc in Viewer (CD, Stick) Uneltele de baza Uneltele de baza includ cele mai comune unelte folosite in modulele OnDemand 3D App. Unel

Sistemul de Gestiune a Bazelor de Date Access

Curs 10

PowerPoint Presentation

PowerPoint Presentation

LUCRAREA 8 PROGRAMAREA NELINIARĂ ÎN REZOLVAREA PROBLEMELOR DIN ENERGETICĂ. METODE DE ORDINUL Aspecte generale Programarea neliniară are o foart

REDRESOARE – simulare PSPICE

Tema laborator TS.NET 2019 Vom simula (partial, in scop didactic) activitatea unui service auto. Pentru aceasta vom considera urmatoarele tipuri: Clie

ANEXĂ

Microsoft Word - CarteC.doc

Analiză statică Analiza fluxului de date 23 octombrie 2014

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

Gestionarea I/E

Platformăde e-learning și curriculăe-content pentru învățământul superior tehnic Sisteme de operare 13. Planificarea proceselor

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

Microsoft Word - 2 ES RO.doc

CURS

Ggestiunea FNUASS

Platforma 5. 1 Introducere in MSSQL Introducere Pe parcursul ultimilor ani, se poate observa o cuplare a limbajelor de programare majore cu tipuri de

Microsoft Word - Excel_3.DOC

Microsoft Word - lab_access.doc

Slide 1

Comanda si supravegherea centralelor termice de putere

ALGORITHMICS

aplicatii java

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

PowerPoint Presentation

Tipuri de date abstracte 30 noiembrie 2005 Programarea calculatoarelor 2. Curs 9 Marius Minea

Programarea şi utilizarea calculatoarelor

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

SUBPROGRAME

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

Microsoft® Access®

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

... MANAGER SERVICE UTILAJE - Aplicatie software pentru gestiune service utilaje - MANUALUL UTILIZATORULUI OFERTE Folositi acest meniu daca dori

Transcriere:

Proceduri stocate Syntax: CREATE PROCEDURE <Name> [@param1 type1,...] -- secventa de comenzi SQL O procedura stocata se ruleaza cu EXEC: EXEC <Name> Modificarea unei proceduri: ALTER PROCEDURE <Name> [@param1 type1,...] -- secventa de comenzi SQL Procedura simpla: CREATE PROCEDURE afiseazacursuri SELECT titlu Procedura cu parametru: ALTER PROCEDURE afiseazacursuri (@credite int) SELECT titlu WHERE ects = @credite Procedura cu parametru Output: CREATE PROCEDURE nrcursuri(@credite int, @numar int output) SELECT @numar = COUNT(*) WHERE credite = @credite Rularea procedurii cu output: DECALRE @nr int SET @nr = 0 exec nrcursuri 6, @numar=@nr output print @nr Procedura cu RAISEERROR RAISERROR ({msg_id msg_str @local_var} {,severity, state})

severity : untilizatorul poate folosi levels 0-18 sys admin poate folosi severity levels 19-25 state : un numar intre 0 si 255 care ne ajuta sa determinam unde a aparut o eroare ALTER PROCEDURE nrcursuri(@credite int, @numar int output) SELECT @numar = COUNT(*) WHERE credite = @credite If @Number = 0 RAISERROR ( nu am gasit cursuri, 10, 1) Functii definite de utilizator Exista functii scalare si functii care returneaza un table. Functii scalare returneaza o valoare scalara CREATE FUNCTION ufgetcursurinr (@credite int) RETURNS int DECLARE @Return int SET @Return = 0 SELECT @Return = COUNT(*) WHERE ECTS = @credite RETURN @Return ---------------------------- Putem folosi procedura in diverse moduri, de exemplu sa afisam rezultatul: print dbo.ufgetcursurinr (6) Se poate folosi si pentru a verifica o conditie, dar nu e recomandat: select * from table1 where column1 = ufgetsomefunctionvalue([param]) -> functia se va apela pentru fiecare rand din table, e ca o subinterogare si poate fi foarte ineficienta

View Un view este un table virtual care contine rezultatul unui select (se poate folosi apoi ca orice alt table): CREATE VIEW view_name SELECT column1, column2,... FROM table_name WHERE condition; Trigger Triggerele sunt un fel de procedure stocate care se activeaza automat la diferite evenimente: INSERT, UPDATE, DELETE CREATE DATABE, DROP LOGIN, etc. CREATE TRIGGER <trigger-name> ON {table view} [WITH <dml_trigger_option> [, n] ] {FOR AFTER INSTEAD OF} --cand se activeaza triggerul { [INSERT] [,] [UPDATE] [,] [DELETE] } -- la ce instructiune se activeaza triggerul [ WITH APP ] [NOT FOR REPLICATION ] {sql_statement [;] [, n] --actiunea triggerului EXTERNAL NAME <method specifier [;] > } Momentul cand se activeaza triggerul: FOR, AFTER au acelasi efect si inseamna ca actiunea triggerului are loc dupa ce s-a executat instructiunea care l-a activat INSTEAD OF instructiunea care a activat triggerul nu se mai executa, dar in locul ei se executa actiunea triggerului Alte informatii utile: inserted tabel de sistem care contine informatii despre randurile inserate de ultima instructiune deleted tabel de sistem care contine informatii despre randurile sterse de ultima instructiune in cazul in care s-a efectuat un update, randurile modificate cu valori vechi apar in deleted, iar randurile modificate cu valori noi apar in inserted @@ROWCOUNT variabila de sistem care contine numarul de randuri afectate de ultima isntructiune CREATE TRIGGER [dbo].[on_product_insert] ON [dbo].[products] AFTER INSERT SET NOCOUNT ON; insert into LogBuys (Name, Date, Quantity) select Name, GETDATE(), Quantity from inserted

Cursor Cursorul poate procesa rezultatul unui SELECT rand cu rand. Pasii pentru a lucre cu un cursor: DECLARE CURSOR se defineste cursorul si se specifica SELECT-ul al carui rezultat vrem sa il procesam OPEN in momentul in care deschidem cursorul se executa SELECT-ul FETCH obtinem cate un rand din rezultat si il procesam CLOSE inchidem cursorul (cursorul nu mai are nevoie de resultset si nu mai pastreaza eventuale lockuri) DEALLOCATE sterge cursorul cu totul, nu mai putem sa il refolosim Sintaxa pentru DECLARE: DECLARE cursor_name CURSOR [LOCAL GLOBAL] [FORWARD_ONLY SCROLL] [STATIC KEYSET DYNAMIC FT_FORWARD] [READ_ONLY SCROLL_LOCKS OPTIMISTIC] [TYPE_WARNING] FOR select_statement [FOR UPDATE [OF column_name [,... n] ] ] Categorii de cursori: FORWARD-ONLY in cadrul cursorului putem citi randurile doar unul dupa altul pana la ultimul rand (F-FORWARD inseamna FORWARD-ONLY si READ ONLY) STATIC cursorul folsoeste o copie temporara a datelor DYNAMIC in cursor se vad toate modificarile aparute pe randurile din resultset Operatia FETCH are mai multe optiuni: FETCH FIRST returneaza primul rand din cursor si acesta devine randul actual FETCH NEXT returneaza urmatorul rand din cursor si acesta devine randul actual FETCH PRIOR returneaza randul anterior din cursor si acesta devine randul actual FETCH LT returneaza ultimul rand din cursor si acesta devine randul actual FETCH ABSOLUTE { n @nvar} o daca contanta n sau variabila @nvar este pozitiva, atunci returneaza al n-lea rand de la inceputul cursorului si acesta devine randul actual o daca contanta n sau variabila @nvar este negativa, atunci returneaza al n-lea rand de la sfarsitul cursorului si acesta devine randul actual o daca contanta n sau variabila @nvar este 0 nu returneaza nimic FETCH RELATIVE { n @nvar} o daca contanta n sau variabila @nvar este pozitiva, atunci returneaza al n-lea rand dupa randul actual din cursor si acesta devine randul actual o daca contanta n sau variabila @nvar este negativa, atunci returneaza al n-lea rand anterior randului actual din cursor si acesta devine randul actual o daca contanta n sau variabila @nvar este 0, atunci returneaza randul actual Variabila de sistem @@FETCH_STATUS ne ajuta sa stim daca mai sunt randuri in rezultat: Daca are valoarea 0, atunci FETCH s-a executat cu succes Daca are valoarea -1 sau -2, atunci FETCH nu s-a executat cu success sau randul cerut nu exista

Exemplu de cursor: DECLARE @ProductID INT, --am definit niste variabile @ProductName VARCHAR(50), @ListPrice MONEY DECLARE cursorproducts CURSOR FOR -- am definit cursorul SELECT ProductID, ProductName, ListPrice FROM Products.Product FOR READ ONLY OPEN cursorproducts --am deschis cursorul FETCH cursorproducts INTO @ProductID, @ProductName, @ListPrice WHILE @@FETCH_STATUS = 0 -- cat timp inca mai sunt randuri -- code for processing @ProductID,@ProductName, @ListPrice FETCH cursorproducts INTO @ProductID, @ProductName, @ListPrice --salveaza valorile randului current in variabile CLOSE cursorproducts DEALLOCATE cursorproducts