Sunteți pe pagina 1din 4

--Se da un nr natural.

Sa se calculeze cifra maxima


declare @n int
declare @max int = 0
declare @c int
set @n = 62784
while @n <> 0
begin
set @c = @n%10
if @c > @max
set @max = @c
set @n /= 10
end
print @max

--Se da un nr. nat. n. Sa se obtina nr. m din n prin micsorarea cifrelor impare cu 1 si
--marirea celor pare cu 1
--ex: n = 25019 => m = 34108

declare @n int, @m int = 0, @p int = 1


set @n = 25019
while @n <> 0
begin
if @n%2 = 0 set @m = (@n%10+1) * @p + @m
else set @m = (@n%10-1) * @p + @m
set @p *= 10
set @n /= 10
end
print @m

--goto

declare @n int, @m int, @p int=1


set @n=25019
set @m=0

inceput:
if @n=0 goto sfarsit
if @n%2=0 set @m=(@n%10+1)*@p+@m
else set @m=(@n%10-1)*@p+@m
set @n=@n/10
set @p=@p*10
goto inceput
sfarsit:print @m

--Se da un nr nat. Sa se det daca cifrele sale sunt in ordine crescatoare(nu strict)
--Pentru a nu pierde valoarea lui n vom utiliza o copie a sa (@m)

declare @n int, @m int, @ok int = 1


set @n = 12645
set @m = @n
while @m != 0
begin
if @m%10 < @m/10%10
begin
set @ok = 0
break
end
set @m = @m/10
end
if @ok = 1 print 'DA'
else print 'NU'

--goto

declare @n int, @m int, @p int=1


set @n=25019
set @m=0

inceput:
if @n=0 goto sfarsit
if @n%2=0 set @m=(@n%10+1)*@p+@m
else set @m=(@n%10-1)*@p+@m
set @n=@n/10
set @p=@p*10
goto inceput
sfarsit:print @m

--CONTINUE
--Se da un nr nat n. Sa se det daca cifrele sale nenule sunt in ordine crescatoare (nu
strict)
--Pentru a nu pierde valoarea lui n vom utiliza o copie a sa (@m)

--Exemplu n=102200340 =>da


declare @n int, @m int, @ok int=1, @c int
set @n= 102200340
set @m=@n
set @c=10
while @m>0
begin
if @m%10= 0
begin
set @m= @m/10
continue
end
if @m%10 > @c
begin
set @ok=0
break
end
set @c= @m%10
set @m/=10
end
if @ok=0 print 'numarul '+ str(@n) +' nu are cifrele nenule in ordine crescatoare'
else print 'numarul '+ str(@n) +' are cifrele nenule in ordine crescatoare'

use MI2022dbStudentiUngureanuMIhai
select * from tNote
select avg(convert(decimal, nota)) from tNote where codCurs = 'POO'

--Sa se mareasca cu 1 notele la POO cat timp media notelor la POO este mai mica decat 8
declare @media decimal(4,2)
inceput:
select @media = avg(convert(decimal, nota)) from tNote where codCurs = 'POO'
print @media
if @media > 8
goto sfarsit
else
update tNote set nota = nota+1 where codCurs = 'POO' and nota<10
goto inceput
sfarsit: print 'sfarsit'

--Cat timp media notelor la engleza este mai mica decat 7,5 sa se mareasca nota
studentilor cu un punct
declare @media decimal (4,2)

select @media = avg (convert (decimal, nota)) from tNote


where codCurs='EN'

while @media < 7.5


begin
print @media
update tNote set nota+=1 where codCurs = 'EN'and nota <10

select @media = avg (convert (decimal, nota)) from tNote


where codCurs='EN'
end
print @media

--Sa se creeze tabelul tStudenti2 cu coloanele idstudent int identity, nume varchar(40),
cod int
CREATE TABLE tStudenti2
(
IDStudent int identity(1,1) primary key,
nume VARCHAR(40),
cod int
)

--Sa se populeze tabelul tStudenti2 cu date generate aleator (20000 de randuri)


declare @cod int, @i int = 0
while @i < 20000
begin
set @i += 1
set @cod = rand()*100000
if not exists(select * from tStudenti2 where cod = @cod)
insert into tStudenti2(nume,cod) values ('std' + str(@cod), @cod)
end

select * from tStudenti2 where cod = '42515'

--Crearea unui index la nivel de cod


create index ixcod on tStudenti2(cod)
drop index tStudenti2.ixcod

print @@connections --cate autentificari au avut loc pe server

print @@version

print @@identity --genereaza ultima valoare generata de identity

insert into tStudenti2(nume,cod) values ('Ionescu', 100002)

declare @r int
select * from tStudenti2 where cod = '100002'
set @r = @@rowcount --nr de randuri afectate de ultima comanda
print @r

print @@servername

print @@error

--Sa se creeze o functie care det nr de studenti de la o anume specializare


create function NrStudenti(@codSpec char (10))
returns int
as
begin
declare @nrs int
select @nrs = count(codStud) from tStudenti where codSpec like @codSpec
return @nrs
end
print dbo.NrStudenti('M%')

alter function NrStudenti(@codSpec varchar (11))


returns int
as
begin
declare @nrs int
select @nrs = count(codStud) from tStudenti where codSpec like @codSpec
return @nrs
end
print dbo.NrStudenti('M%')

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