Documente Academic
Documente Profesional
Documente Cultură
t
Conf. Univ. Dr. Cătălin Tudor
r i g h
op y
C
BAZE DE DATE – Concept general
Cătălin Tudor 1
Suport de curs – Gestiunea bazelor de date
Structuri de date:
t
structurilor de date şi a relaţiilor care există
h
între realizările acestora.
y r i g
C op
BAZE DE DATE – generalităţi
Cătălin Tudor 2
Suport de curs – Gestiunea bazelor de date
i g h t
y r
C op
Cătălin Tudor 3
Suport de curs – Gestiunea bazelor de date
t
► IBM DB2
• Securitate sporita a datelor
h
► Sybase • Scalabilitate
y r i g
C op
Desemnează relaţia dintre două entităţi
software care partajează sarcini comune
într-o reţea de calculatoare.
Un program care poartă denumirea de
client, iniţiază o cerere informaţională
către un alt program, denumit server,
capabil să furnizeze răspunsul la cererea
clientului .
Avantajul principal:
• accesul permanent la date din orice locaţie a unei
instituții sau organizații, prin conectarea tuturor
aplicaţiilor client la o singură bază de date.
Cătălin Tudor 4
Suport de curs – Gestiunea bazelor de date
t
• furnizează răspunsul către client.
r i g h
op y
C
Exemplificarea generică a relației
Client-Server
Cătălin Tudor 5
Suport de curs – Gestiunea bazelor de date
i g h t
y r
C
Client-Server
op se bazează pe trei
componente:
• logica prezentării (responsabilă cu interfaţa grafică expusă
utilizatorilor);
• logica procesării (responsabilă cu gestionarea şi aplicarea
tuturor regulilor legate de managementul şi prelucrarea
datelor);
• logica stocării datelor (ce va gestiona păstrarea şi
extragerea datelor).
În funcție de modul de grupare a
componentelor Client-Server, există:
• Arhitectura client-server pe două nivele (two tiers)
• Arhitectura client-server pe trei nivele (three tiers)
• Arhitectura client-server multi-nivel (n tiers)
Cătălin Tudor 6
Suport de curs – Gestiunea bazelor de date
t
•Logica datelor: Calculatorul Server
g h
•Logica procesării: împărțită între Client și Server
y r i
C op
Tipologia sistemelor Client-Server
Cătălin Tudor 7
Suport de curs – Gestiunea bazelor de date
t
•Logica datelor: Calculatorul Server
g h
•Logica procesării: Server de aplicație și Server Web
y r i
C op
Tipuri de date în SQL Server
Categorii de tipuri de date:
Numere exacte
Şiruri de caractere non-Unicode
Şiruri de caractere Unicode
Numere aproximative
Şiruri de caractere binare
Dată și oră
Alte tipuri de date
Cătălin Tudor 8
Suport de curs – Gestiunea bazelor de date
t
nvarchar
h
ntext
y r i g
C op
Tipuri de date în SQL Server
Şiruri de caractere Alte tipuri de date
binare cursor
binary uniqueidentifier
varbinary xml
image table
Dată și oră
date
datetime
datetime2
smalldatetime
time
Cătălin Tudor 9
Suport de curs – Gestiunea bazelor de date
i g h t
y r
C op
Crearea tabelelor în SQL Server (II)
Instrucţiuni pentru crearea tabelelor SQL Server:
Forma minimalistă:
CREATE TABLE Nume_tabel
(
nume_câmp1 tip_data(dimensiune) [restricţie câmp],
nume_câmp2 tip_data(dimensiune) [restricţie câmp],
nume_câmp3 tip_data(dimensiune) [restricţie câmp],
....,
Nume_camp_cheie_externa
CONSTRAINT cheie_externa REFERENCES nume_tabel_extern (cheie primară
tabel extern)
);
Cătălin Tudor 10
Suport de curs – Gestiunea bazelor de date
t
CONSTRAINT FK_Categorie FOREIGN KEY (CodCategorie),
h
REFERENCES dbo.CategoriiProduse (CodCategorie)
y r i g
C op
Instrucţiuni pentru modificarea şi
ştergerea tabelelor din baza de date
Instrucţiunea ALTER TABLE – modificarea structurii sau
definiţiei tabelului:
ALTER TABLE [dbo].[Produse] WITH CHECK ADD CONSTRAINT [Produse_FK]
FOREIGN KEY([CodCategorie])
REFERENCES [dbo].[CategoriiProduse] ([CodCategorie])
ON DELETE CASCADE
GO
Intrucţiunea DROP TABLE– elimină definitiv o tabelă din cadrul
bazei de date
DROP TABLE dbo.Produse;
Cătălin Tudor 11
Suport de curs – Gestiunea bazelor de date
t
locale (disponibile doar utilizatorului curent şi sesiunii în care acesta lucrează)
r i g h
op y
C
Tabele temporare - exemple
Crearea unui tabel temporar local:
create table #Enumerare
(
NumeDepartament varchar(20),
CodDepartament int
)
Crearea unui tabel temporar global:
create table ##SesiuniDeLucru
(
NumeUtilizator nvarchar(50),
IdSesiune int
)
Cătălin Tudor 12
Suport de curs – Gestiunea bazelor de date
h t
date, fiind prezente doar în obiectele de tip cerere (interogare).
y r i g
C op
Implementarea restricţiilor asupra datelor
Cătălin Tudor 13
Suport de curs – Gestiunea bazelor de date
i g h t
y r
C op
Exemplu: Implementarea restricţiei privind
datele din factură
Cătălin Tudor 14
Suport de curs – Gestiunea bazelor de date
h t
In fereastra de proprietăţi ale asocierii
se pot configura restricţiile de integritate
y r i g
C op
Limbajul Transact-SQL (T-SQL)
Cătălin Tudor 15
Suport de curs – Gestiunea bazelor de date
t
SQL Server
r i g h
op y
C Vocabularul SQL:
Instrucţiuni – permit execuţia anumitor acţiuni (CREATE,
ALTER, SELECT, UPDATE, DELETE, etc.)
Clauze – specifică argumentele unei instrucțiuni (FROM,
WHERE, ORDER BY, etc.)
Funcții – efectuează prelucrări asupra datelor (care devin
argumente sau parametrii) în scopul afișării unor rezultate
specifice (SUM, ROUND, UPPER, LEFT, GETDATE, ISNULL
etc.).
Operatori – acționează asupra datelor (care devin operanzi),
permițând definirea unor expresii, calcule, etc. (aritmetici, de
comparare, logici, de concatenare, etc.).
Cătălin Tudor 16
Suport de curs – Gestiunea bazelor de date
t
pe utilizatori):
h
GRANT, REVOKE
y r i g
C op
Formatul general al frazei SQL de selecție:
SELECT [ALL / DISTINCT / TOP N] <listă_selecţie>
FROM <listă tabele>
[WHERE <criteriu de filtrare>]
[GROUP BY <listă câmpuri de grupare>]
[HAVING <criteriu de grupare>]
[ORDER BY <listă câmpuri de ordonare> [ASC|DESC]];
unde:
• Lista de selecţie precizează atributele sau expresiile ale căror valori
vor fi returnate;
• listă-tabele specifică tabelele din care se vor extrage datele înlănţuite
prin condiţii de compunere;
• WHERE permite exprimarea criteriului de selecţie înaintea efectuării
oricărei grupări în vederea sintetizării informaţiei;
• GROUP BY folosit pentru a partiţiona o tabelă în grupuri după câmpul
specificat;
• HAVING specifică criterii de selecţie pentru date agregate;
• ORDER BY precizează atributul/atributele după care se va face
ordonarea.
Cătălin Tudor 17
Suport de curs – Gestiunea bazelor de date
i g h t
y r
C op
Functii SQL uzuale
Cătălin Tudor 18
Suport de curs – Gestiunea bazelor de date
Functia CONVERT
coverteste rezultatul unei expresii intr-un anumit timp de date
Sintaxa:
CONVERT (tip_date_rezultat [(lungime)], expresie [, stil_coversie])
t
103 dd/mm/yyyy
h
108 hh:mi:sec
i g
113 dd mon yyyy hh:mi:ss:mmm
y r
C
Functia CONVERT (exemple)op
Nota: In acest caz codul 103 indica in ce mod
este specificata data in sirul de caractere
(dd/mm/yyyy) pentru a fi corect convertita in
formatul datei serverului !
Daca se doreste afisarea in formatul
dd/mm/yyyy, o data calendaristica trebuie
convertita in sir de caractere, cu cod 103, asa
cum este in primul exemplu, altfel se afiseaza in
formatul serverului.
Cătălin Tudor 19
Suport de curs – Gestiunea bazelor de date
i g h t
y r
C
Functia GETDATE() op
returneaza data si ora serverului
Exemplu: data si ora serverului
Cătălin Tudor 20
Suport de curs – Gestiunea bazelor de date
DAY (expresie)
MONTH(expresie)
YEAR(expresie)
i g h t
y r
C
Functia DATEPART
Sintaxa:
op
DATEPART (informatie_calendaristica, expresie_data/ora)
Cătălin Tudor 21
Suport de curs – Gestiunea bazelor de date
i g h t
y r
C
Functia DATEDIFF
Sintaxa:
op
DATEDIFF (informatie_calendaristica, data/ora start, data/ora final)
Calculeaza diferenta dintre doua date calendaristice (data/ora final si data/ora start). Rezultatul
este furnizat intr-un anumit tip de informatie calendaristica, identificata printr-un cod
Cătălin Tudor 22
Suport de curs – Gestiunea bazelor de date
Functia DATEADD
Sintaxa:
i g h t
y r
C
Functiile LTRIM, RTRIM op
LTRIM(expresie) – elimina spatiile nesemnificative de la stanga unei
expresii de tip sir de caractere
Cătălin Tudor 23
Suport de curs – Gestiunea bazelor de date
i g h t
y r
C op
Functiile LEFT, RIGHT, SUBSTRING
LEFT(expresie, n) – returneaza n caractere de la stanga unei expresii sir
de caractere
Cătălin Tudor 24
Suport de curs – Gestiunea bazelor de date
i g h t
y r
C op
Considerente generale privind agregarea
datelor
Rezultatul unei interogări de agregare va afișa doar realizările
câmpului/câmpurilor de grupare și valorile agregate ale
câmpului/câmpurilor de sintetizat.
Funcțiile de agregare pot fi utilizate pentru unul sau mai multe
câmpuri din cadrul sursei de date, dar și pentru câmpuri calculate.
Gruparea se poate realiza pentru mai multe câmpuri ale sursei de date
sau calculate. Ordinea de grupare este cea a selectării câmpurilor
necesare pentru afișare.
În cazul în care intervin condiţii de filtrare, mai întâi are loc filtrarea și
apoi vor fi agregate datele rezultate în urma acesteia.
Câmpurile folosite doar pentru a stabili condiţii de filtrare nu sunt
niciodată afișate în rezultatul final.
Cătălin Tudor 25
Suport de curs – Gestiunea bazelor de date
Pasul 1: Filtrarea
înregistrărilor
Pasul 2: Gruparea și
agregarea datelor
i g h t
y r
C op
Grupări de date şi funcţii de grup
1. Funcții de agregare aplicate tuturor înregistrărilor, fără a fi
necesară gruparea:
Să se afișeze câte facturi au fost emise în luna februarie, anul 2012.
Cătălin Tudor 26
Suport de curs – Gestiunea bazelor de date
t
WHERE Month([DataFactura])=2 AND Year([DataFactura])=2012
h
GROUP BY DenumireFz
g
HAVING Count(*)>3
y r i
C op
Grupări de date şi funcţii de grup
Afişaţi numărul total de plăţi, numărul total de bonuri de casă şi numărul distinct al bonurilor de
casă, ştiind că anumite bonuri de casă sunt achitate prin mai multe tipuri de plăţi şi alte bonuri de
casă nu sunt achitate încă.
Cătălin Tudor 27
Suport de curs – Gestiunea bazelor de date
Row_Number()
Atribuie un număr de ordine fiecărei înregistrări în funcţie de un
criteriu de ordonare specificat în clauza OVER.
i g h t
y r
C op
Funcţiile de clasificare Row_Number(),
Rank(), NTile(NrGrupe)
RANK()
Atribuie un rang fiecărei înregistrări în funcţie de un
criteriu de ordonare. Înregistrările cu aceleaşi valori pe
câmpul după care se face ordonarea vor avea acelaşi rang.
NTile(NrGrupe)
Permite distribuirea înregistrărilor dintr-un set de
rezultate pe N intervale în funcţie de un criteriu de
ordonare.
Cătălin Tudor 28
Suport de curs – Gestiunea bazelor de date
i g h t
y r
C op
Funcţiile de clasificare - Exemplificare
Select IdPlata, SumaPlatita, YEAR(DataOraPlata) as An,
Row_Number() over (partition by YEAR(DataOraPlata) order by
SumaPlatita DESC) as OrdonarePlata
FROM Plati
Order by year(DataOraPlata)
Cătălin Tudor 29
Suport de curs – Gestiunea bazelor de date
t
contrar 0.
r i g h
op y
C
Căutarea în cadrul şirurilor de caractere pe
baza şabloanelor definite prin operatorul de
comparaţie LIKE
Sintaxa: <expresie> [NOT] LIKE <sir de caractere>
<expresie> nume de câmp dintr-un tabel sau orice altă expresie SQL validă
ce poate fi evaluată drept şir de caractere
<sir de caractere> şirul sau tiparul ce urmează a fi regăsit în cadrul expresiei
pe care se efectuează căutarea
Caractere speciale utilizabile la căutare:
% ţine locul unui şir de zero sau mai multe caractere
Cătălin Tudor 30
Suport de curs – Gestiunea bazelor de date
t
Select * from Vanzatori
h
WHERE CNPVanzator like '_[^7][^8]%'
y r i g
C op
Structura alternativă CASE
Se folosește pentru a afișa o valoare în funcție de rezultatul
evaluării unei condiţii în clauza SELECT.
CASE expresieA
WHEN expresieB1 THEN expresie_Rezultat
[WHEN expresieB2 THEN expresie_Rezultat]
…
[ELSE expresie_Rezultat_F]
END
CASE
WHEN expresie_logica1 THEN expresie_Rezultat
[WHEN expresie_logica2] THEN expresie_Rezultat
…
[ELSE expresie_Rezultat_F]
END
Cătălin Tudor 31
Suport de curs – Gestiunea bazelor de date
h t
FROM Plati
y r i g
C op
Utilizarea sub-interogărilor în limbajul T-SQL
Sub-interogare=structură SQL al cărei rezultat ajută în
rezolvarea unei alte interogări (interogări imbricate)
Predicate utilizate pentru sub-interogări:
ANY – compară partea stângă a sa cu oricare dintre rezultatele unei sub-
interogări situate în partea dreaptă
ALL – Compară partea stângă a sa cu toate rezultatele sub-interogării
EXISTS – se comportă ca un operator după clauza WHERE care
evaluează dacă sub-interogarea returnează cel puțin o înregistrare
IN – poate fi utilizat când se compară rezultatele a două mulțimi, dintre
care cea din dreapta este returnată de sub-interogare
Cătălin Tudor 32
Suport de curs – Gestiunea bazelor de date
i g h t
y r
C op
Exemple de interogări cu sub-interogări
3. Furnizorul care a emis cele mai multe facturi.
SELECT DenumireFurnizor
FROM Furnizori, Facturi
WHERE Furnizori.CodFiscal = Facturi.CodFiscal
Group By DenumireFurnizor
Having Count(NrFactură)>=
ALL (Select Count(NrFactură)
FROM Furnizori, Facturi
WHERE Furnizori.CodFiscal = Facturi.CodFiscal
Group By DenumireFurnizor)
Cătălin Tudor 33
Suport de curs – Gestiunea bazelor de date
SELECT Furnizori.DenumireFz
FROM Furnizori
WHERE Furnizori.CodFiscal IN
(Select Facturi.CodFiscal FROM Facturi
t
WHERE DataFactura>#09/20/2012#)
r i g h
op y
C
Interogări SQL pentru adăugarea de noi înregistrări
Varianta 1: Adăugarea pe baza unor valori noi
INSERT INTO nume-tabela (nume-atribut1, nume-atribut2,…)
VALUES (valoare1, valoare2,…)
Cătălin Tudor 34
Suport de curs – Gestiunea bazelor de date
UPDATE nume-tabel
SET nume-atribut1=valoare1, nume-atribut2=valoare2, …
WHERE Condiții
t
(Select IDFactura FROM Facturi WHERE DataFactura>#12.09.2012#)
r i g h
op y
DELETE * C
Interogări SQL pentru ștergerea înregistrărilor
FROM nume-tabel
WHERE Condiție
DELETE *
FROM Clienti
WHERE Localitate=‘Braila’
Cătălin Tudor 35
Suport de curs – Gestiunea bazelor de date
i g h t
y r
Roluri
utilizatori
C op
Server
Tabel 1
Vedere user 1
Tabel 2
Vedere user 2
Cătălin Tudor 36
Suport de curs – Gestiunea bazelor de date
t
Tabele partiţionate prin distribuirea bazelor de date pot fi regrupate printr-
h
o vedere ce poate fi ulterior interogată cu mai mare uşurinţă.
y r i g
C op
Crearea şi manipularea vederilor
Două moduri de definire a unei vederi:
Grafic, prin interfaţa SSMS: definirea câmpurilor şi a condiţiilor de
filtrare a datelor se poate realiza vizual;
Utilizând limbajul SQL în gestionarea obiectelor de tip View
(CREATE | ALTER | DROPView …)
Cătălin Tudor 37
Suport de curs – Gestiunea bazelor de date
Selectare
tabele sursă
i g h t
y r
C op
Panoul surselor de date
Grila de câmpuri
Cătălin Tudor 38
Suport de curs – Gestiunea bazelor de date
Selectarea câmpurilor ce
formează vederea
i g h t
y r
C op
Denumirea câmpurilor afişată în
Opţiuni privind sortarea
cadrul vederii
Cătălin Tudor 39
Suport de curs – Gestiunea bazelor de date
Pasul 1: Selectarea
tabelelor sursă
i g h t
y r
C op
Agregarea datelor - exemplu
Să se creeze o vedere a tabelelor care să afişeze pentru fiecare bon de casă emis în
anul 2011 valoarea totală şi numărul de produse din cadrul acestuia.
Pasul 2: Selectarea
câmpurilor necesare,
definirea formulelor de
calcul şi stabilirea
condiţiilor de filtrare
Cătălin Tudor 40
Suport de curs – Gestiunea bazelor de date
Pasul 3: Precizarea
grupărilor de date şi
aplicarea funcţiilor de
grupare specifice
i g h t
y r
C op
Definiţie: O procedură stocată este un obiect al
bazei de date SQL Server conţinând una sau mai
multe clauze SQL care permit efectuarea de
modificări asupra bazei de date sau extragerea
informaţiilor din cadrul ei.
Procedurile stocate:
Pot conţine instrucţiuni privind modificarea structurală a
bazei de date;
Pot conţine parametri de intrare şi pot returna valori
multiple prin definirea unor parametri de ieşire;
Pot returna o valoare care să indice starea executării
procedurii în ansamblul ei.
Pot conţine structuri de control de diverse feluri.
Cătălin Tudor 41
Suport de curs – Gestiunea bazelor de date
t
Pot deţine, asemănător obiectelor de tip
h
Vedere, atribute de securitate ce pot îmbunătăţi
i g
politicile de acces la datele senzitive.
y r
C op
Crearea unei proceduri stocate:
Vizual, prin interfaţa SSMS;
Prin comanda SQL:
CREATE PROC | Procedure <<NumeProcedură>>
[ListăParametri]
AS
Instrucţiuni SQL
Modificarea unei proceduri stocate:
Prin comanda SQL: ALTER PROC | Procedure …
Ştergerea unei proceduri stocate:
Prin comanda SQL: DROP PROC | Procedure …
Cătălin Tudor 42
Suport de curs – Gestiunea bazelor de date
Procedura parametrizată:
prezintă abilitatea de a transmite valoarea unei
condiţii prin intermediul unui parametru;
Permite printr‐o singură definiţie acoperirea nevoilor
informaţionale ale mai multor utilizatori.
Mod de definire:
CREATE PROC <nume_procedura>
@<Nume_parametru> <tip_de_date> [OUTPUT]
…
AS
t
<instrucţiuni SQL>
r i g h
op y
C
Să se creeze o procedură stocată prin care să se afişeze toţi
vânzătorii angajaţi într‐un an precizat ca parametru:
CREATE PROC usp_VanzatoriParametru
@AnAngajare smallint
AS
BEGIN
Select Nume, Prenume, DataAngajarii
FROM Vanzatori
WHERE
YEAR(DataAngajarii)=@AnAngajare
END
Cătălin Tudor 43
Suport de curs – Gestiunea bazelor de date
Declarare:
Declare @NumeVariabilă as TipDeDate
Atribuire valori variabilă:
sau
Select @NumeVariabilă=Valoare
i g h t
y r
C op
EXEC nume_procedură
EXEC nume_procedură [val_param1,
val_param2, …..]
Exec usp_ListaVanzari
Cătălin Tudor 44
Suport de curs – Gestiunea bazelor de date
Reguli:
Enumerarea parametrilor de intrare se va face prin
separarea acestora prin virgulă;
Definirea parametrilor de intrare se poate realiza prin
imbricarea parametrilor obligatorii cu cei opţionali;
La executarea procedurii stocate se va ţine cont de
ordinea în care parametrii au fost precizaţi doar dacă
nu se va specifica în mod explicit numele parametrului.
Când un parametru opţional apare înaintea altor
parametri obligatorii, nespecificarea unei valori pentru
acesta determină utilizarea numelor celorlalţi
t
parametri în precizarea valorilor acestora sub forma:
g h
@NumeParametru=Valoare.
y r i
C op
Funcţia utilizator: defineşte un set de instrucţiuni
şi secvenţe de control SQL aplicat pentru
prelucrarea datelor din tabele sau alte obiecte
interogabile returnând o valoare.
Se constituie într-un obiect SQL de sine stătător
ce poate fi apelat prin precizarea numelui şi
parametrilor săi ori de câte ori este nevoie în
cadrul altor obiecte SQL Server.
Poate fi utilizată în cadrul obiectelor de tip View sau al
procedurilor stocate diminuând considerabil
dimensiunea codului SQL şi facilitând o mai bună
structurare a acestuia.
Poate fi utilizată pentru simularea unor tabele virtuale ce
pot fi interogate asemănător tabelelor bazei de date.
Cătălin Tudor 45
Suport de curs – Gestiunea bazelor de date
Funcţii de tip scalar (scalar functions)
Realizează o prelucrare conform unui algoritm
conceput de utilizator ţinând cont de valorile
parametrilor specifici.
Returnează o singură valoare prezentând un tip de
dată scalar (predefinit sau definit de utilizator)
Funcţii de tip tabelar (table valued functions)
returnează un set de înregistrări ce poate fi asimilat
unui tabel virtual.
În funcţie de tipul în care sunt definite pot fi:
t
Funcţii de tip tabel în linie (inline): returnează un tabel ca rezultat al
h
unei instrucţiuni SQL fără a fi nevoie definirea acestuia.
g
Funcţii tabel de tip multi‐instrucţiune: necesită definirea explicită a
i
tabelului rezultat.
y r
C op
Acceptă zero sau mai mulţi parametri
Returnează o singură valoare
Constă în două părţi:
Antetul funcţiei în care se definesc numele funcţiei, lista parametrilor şi
tipul de dată returnat de funcţie.
Corpul funcţiei în care este definit algoritmul de calcul al valorii rezultat
care se termină cu clauza RETURN.
Apelarea funcţiei poate fi făcută în cadrul
instrucţiunilor SQL în clauze precum SELECT,
WHERE , GROUP BY, HAVING sau ORDER BY.
Se recomandă atunci când un anumit cod sau
secvenţă SQL este utilizat/ă în mai multe
proceduri.
Pentru apelarea ei se va utiliza inclusiv numele
proprietarului.
Cătălin Tudor 46
Suport de curs – Gestiunea bazelor de date
Pentru modificare:
ALTER FUNCTION .....
Pentru ştergere:
DROP FUNCTION .....
i g h t
y r
C op
A. Varianta INLINE.
se returnează un tabel ca rezultat, fără a fi
nevoie să se definească structura acestuia
nu sunt permise BEGIN ….END
este permisă o singură frază SQL de tip SELECT
fiecare câmp din interogarea sursă trebuie să
aibă un nume
clauza ORDER BY este permisă numai dacă se
utilizează împreună cu TOP
nu sunt permise prelucrări complexe
Coloanele pe care funcţia de tip tabel le va
returna sunt dictate de instrucţiunea SELECT
care stă la baza ei,
Cătălin Tudor 47
Suport de curs – Gestiunea bazelor de date
A. Varianta INLINE.
CREATE FUNCTION [numeproprietar.] nume_funcţie ([ @parametru_1 AS tip_de_date],
… [ @parametrul_n AS tip_de_date] )
RETURNS TABLE
As
RETURN (fraza_SQL_SELECT)
i g h t
y r
C op
B. varianta MULTI‐INSTRUCŢIUNE
se returnează un tabel rezultat
este necesar să se definească explicit structura
tabelului rezultat
poate include prelucrări complexe
Cătălin Tudor 48
Suport de curs – Gestiunea bazelor de date
B. varianta MULTI‐INSTRUCŢIUNE
CREATE FUNCTION [numeproprietar.] nume_funcţie
([ @parametru_1 AS tip_de_date], …. [ @parametrul_n AS tip_de_date] )
RETURNS @variabila_ieşireTABLE
(câmp_1 tip de date, …câmp_N tip de date)
AS
BEGIN
INSTRUCŢIUNI SQL
RETURN
END
i g h t
y r
C op
Cătălin Tudor 49