PLSQL Exercises
PLSQL Exercises
begin
open c1
fetch c1 into @id, @fullname
while @@fetch_status = 0
begin
exec @hours = EmpHours @id
print @id + ' ' + @fullname + ' '+ convert(char(10), @hours)
fetch c1 into @id, @fullname
end
close c1
deallocate c1
end
--Íá äçìéïõñãçèåß ìéá procedure ShowDept ìå ðáñÜìåôñï ôïí êùäéêü åíüò ôìÞìáôïò (dnumber)
--êáé èá åìöáíßæåé ôï üíïìá ôìÞìáôïò, ôï ðëÞñåò üíïìá ôïõ ìáíáôæåñ êáé ôá
--ïíüìáôá ôùí project óôá ïðïßá óõììåôÝ÷åé.
begin
select @dnm=d.dname, @mname=e.lastname+' '+e.firstname
from department d, employee e
where d.dnumber=e.dnumber
and d.dnumber = @dn
print @dnm + ' ' + @mname
print '--------------------'
open pr
fetch pr into @pn
while @@fetch_status = 0
begin
print @pn
fetch pr into @pn
end
close pr
deallocate pr
end
exec ShowDept 6
--procedure EmpSalray
--Íá õðïëïãéóôåß ôï ðëÞèïò ôùí projects ðïõ óõììåôÝ÷åé ï êÜèå åñãáæüìåíïò.
--Áí åßíáé ðÜíù áðü 2 ôüôå íá áõîÜíåôáé ï ìéóèüò ôïõ êáôÜ 2%
create procedure EmpSalary as
set nocount on
declare e1 cursor for
select emp_id, count(*)
from works_on
group by emp_id
declare @id char(8), @p1 int
begin
open e1
FETCH e1 INTO @id, @p1
WHILE @@FETCH_STATUS = 0 --Ýëåã÷ïò ãéá ôï ôÝëïò ôïõ cursor
Begin
print @id + convert(varchar(10),@p1)
if @p1>2
begin
update employee
set salary=1.02*salary
where emp_id=@id
print '------¸έãéíå áýîçóç óôïí' + @id
end
FETCH e1 INTO @id, @p1
End
CLOSE e1
DEALLOCATE e1
end
--exec EmpSalary
--Íá ãñáöåß ôìÞìá êþäéêá ðïõ èá åìöáíßæåé ôïí êùäéêü êáé ôï ïíïì/ìï ôïõ supervisor
--êáèþò êáé ôï ðëÞèïò ôùí õðáëëÞëùí ðïõ ðñïßóôáôáé
declare e1 cursor for
select e1.emp_id, e1.lastname+' ' +e1.firstname supname, count(*)
plithos_emp
from employee e1, employee e2
where e1.emp_id = e2.supervisor_id
group by e1.emp_id, e1.lastname+' ' +e1.firstname
declare @id char(8), @sn char(20), @pl int
begin
open e1
FETCH e1 INTO @id, @sn, @pl
WHILE @@FETCH_STATUS = 0 --Ýëåã÷ïò ãéá ôï ôÝëïò ôïõ cursor
Begin
print @id + ' ' + @sn + ' ' + convert(varchar(10), @pl)
FETCH e1 INTO @id, @sn, @pl
end
close e1
deallocate e1
end
Υπολογίζοντας τον μέσο μισθό όλων των εργαζομένων και όσο είναι κάτω από 900 να κάνετε συνολική
αύξηση μισθών κατά την τιμή της μεταβλητής @extra_money. Η ενέργεια θα επαναλαμβάνεται όσο ο
μέγιστος μισθός είναι πάνω από 3000.