Sunteți pe pagina 1din 5

MINISTERUL EDUCAȚIEI AL REPUBLICII MOLDOVA

UNIVERSITATEA TEHNICĂ A MOLDOVEI

FACULTATEA CALCULATOARE, INFORMATICĂ ȘI MICROELECTRONICĂ

DEPARTAMENULT INGINERIE SOFTWARE ȘI AUTOMATICĂ

LUCRARE DE LABORATOR NR. 5


Disciplina : Baze de date
Tema : TRANSACT-SQL : Instrucțiuni procedurale

A elaborat : st.gr.TI-181 f/r , Caldari Pavel

A verificat : prof.univ. Saranciuc Dorian

2023
Scopul lucrării:
Studierea elementelor de bază ale limbajului Transact-SQL și a instrucțiunilor
procedurale. În afară de aceasta, se tratează aspectele de utilizare a interfeței Editorului de
Interogări pentru crearea și gestiunea interogărilor SQL.

Sarcina lucrării:
--1. Completați următorul cod pentru a afișa cel mai mare număr dintre cele trei
numere presentate.

declare @N1 int, @N2 int, @N3 int;


declare @MAI_MARE int;
set @N1 = 75 *rand();
set @N2 = 75 *rand();
set @N3 = 75 *rand();
--Conditiile IF
if (@N1 > @N2 and @N2 > @N3)
set @MAI_MARE = @N1;
else if (@N2 > @N1 and @N1 > @N3)
set @MAI_MARE = @N2;
else set @MAI_MARE = @N3;
--
print @N1;
print @N2;
print @N3;
print 'Mai mare = ' +cast(@MAI_MARE as varchar(2));

--2. De afișat datele despre biletele de zbor în dependență de tarif.


-- Variabila care va identifica tariful se va genera random (de la 1-5).
declare @bilet varchar(15)
,@tarif int;
set @bilet =(select id_ticket from dbo.Ticket_flights where id_ticket = 0005432159775 )
set @tarif = 5*rand();
if @tarif <=3
(select t.passenger_name, t.id_passenger, tf.tarif_conditions, tf.amount, bs.seat_no
from dbo.Tickets t
,dbo.Boarding_passes bs
,dbo.Ticket_flights tf
where t.id_ticket = tf.id_ticket
and tf.id_ticket = bs.id_ticket
and tf.id_ticket = @bilet)
else print 'Nu exista tarif de categoria '+cast(@tarif as varchar(2))+' in biletul '+@bilet

2
--3. De modificat codul de la ex.1 utilizând case.
declare @N1 int, @N2 int, @N3 int;
declare @MAI_MARE int
,@RESULT varchar(50);
set @N1 = 75 *rand();
set @N2 = 75 *rand();
set @N3 = 75 *rand();
--Conditiile IF
if (@N1 > @N2 and @N2 > @N3)
set @MAI_MARE = @N1;
else if (@N2 > @N1 and @N1 > @N3) set @MAI_MARE = @N2;
else if (@N3 > @N1 and @N3 > @N2) set @MAI_MARE = @N3;
set @RESULT = case @MAI_MARE
when @N1
then 'Numarul mai mare este '+cast(@N1 as varchar(2))
when @N2
then 'Numarul mai mare este '+cast(@N2 as varchar(2))
when @N3
then 'Numarul mai mare este '+cast(@N3 as varchar(2))
end
print @N1;print @N2;print @N3;print @RESULT;

--4. De modificat codul la ex.1 pentru procesarea erorilor cu TRY – CATCH.

declare @N1 int, @N2 int, @N3 int;


declare @MAI_MARE int;
set @N1 = 100 *rand();
set @N2 = 100 *rand();
set @N3 = 100 *rand();
--Conditiile IF
begin try
if (@N1 > @N2 and @N1 > @N3)
set @MAI_MARE = @N1;
else if (@N2 > @N1 and @N2 > @N3)
set @MAI_MARE = @N2;
else if (@N3 > @N1 and @N3 > @N2)
set @MAI_MARE = @N3;
else if (@N1 = @N2 or @N1 = @N3 or @N2 = @N3)
set @MAI_MARE = @N1/0;
print @N1; print @N2; print @N3;
print 'Mai mare =' +cast(@MAI_MARE as varchar(2));
end try
begin catch
print 'Este o eroare'
end catch

3
-- De modificat scriptul de la ex.2 cu RAISERROR
declare @bilet varchar(15)
,@tarif int;
set @bilet =(select id_ticket from dbo.Ticket_flights where id_ticket = 0005432159775 )
set @tarif = 5*rand();
if @tarif <=3
(select t.passenger_name
,t.id_passenger
,tf.tarif_conditions
,tf.amount
,bs.seat_no
from dbo.Tickets t
,dbo.Boarding_passes bs
,dbo.Ticket_flights tf
where t.id_ticket = tf.id_ticket
and tf.id_ticket = bs.id_ticket
and tf.id_ticket = @bilet)
if @tarif < 3
begin
raiserror('Nu exista tarif de categoria 0 in bilet',16,1)
end

4
Concluzie
În lucrarea de laborator curenta am studiat elementele de bază ale limbajului Transact-
SQL, la fel am studiat structura instrucțiunilor CASE, IF-ELSE, TRY-CATCH, RAISERROR, care
mai târziu le-am utilizat în gestiunea tabelelor și lucrul cu variabilele.
Microsoft SQL Server 2012 reprezintă cel mai puternic și semnificativ instrument de
gestiune a bazelor de date, oferind posibilități și facilitate de constructive și gestiune a bazelor de
date programatorului și administratorului.

S-ar putea să vă placă și