Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 2. ZADATAK
- Kreirati funkciju fun_Najplaceniji koja vraća sve podatke o radniku sa najvećim primanjima u
- preduzeću.
- create function fun_Najplaceniji()
- returns table
- as
- return
- (
- select *
- from RADNIK
- where plata+isnull(premija,0)= (select max(plata+isnull(premija,0))from radnik)
- )
- select *
- from dbo.fun_Najplaceniji()
- 3. ZADATAK
- Kreirati funkciju fun_BrojRadnika koja za zadatu kvalifikaciju vraća koliko radnika u
- preduzeću ima zadatu kvalifikaciju . U slučaju da se zada nepostojeća kvalifikacija funkcija
- treba da vrati broj 200.
- create function fun_BrojRadnika(
- @kvalif nchar(30)
- )
- returns int
- as
- begin
- declare @brradnika int
- if NOT EXISTS (select kvalif from RADNIK where kvalif=@kvalif)
- begin
- set @brradnika=200
- end
- else
- begin
- select @brradnika=count(id_radnika)
- from RADNIK
- where Kvalif=@kvalif
- end
- return @brradnika
- end
- print dbo.fun_BrojRadnika('VKV')
- 4. ZADATAK
- Kreirati pogled view_ORP koji prikazuje imena odeljenja, imena radnika koji rade u tim
- odeljenjima i imena projekata na kojima rade samo za radnike koji imaju više od 20 godina
- staža.
- create view view_ORP
- as
- SELECT dbo.ODELJENJE.Ime_od,dbo.RADNIK.Ime,dbo.PROJEKAT.Ime_proj
- from radnik, odeljenje, ucesce,PROJEKAT
- where radnik.id_radnika = UCESCE.Id_radnika and odeljenje.Id_odeljenja =radnik.Id_odeljenja and PROJEKAT.Id_projekta = UCESCE.Id_projekta and (year (sysdatetime())-year(dat_zap)>20)
- select *
- from view_ORP
- 5. ZADATAK
- Kreirati uskladištenu proceduru sp_Premesti koja radnika čije se ime i prezime zadaje
- prebacuje u odeljenje čije se ime zadaje. U slucaju da radnik vec radi u trazenom odeljenju
- vratiti poruku RADNIK JE VEC U TRAZENOM ODELJENJU, u protivno vratiti poruku RADNIK
- PREMESTEN
- create procedure sp_Premesti
- @ime nchar(30),
- @prezime nchar(30),
- @imeod nchar(30)
- as
- begin
- if not exists (select id_radnika from RADNIK where ime=@ime and prezime=@prezime and Id_odeljenja= (select id_odeljenja from odeljenje where ime_od=@imeod))
- begin
- update radnik
- set Id_odeljenja = (select id_odeljenja from odeljenje where ime_od=@imeod)
- where ime=@ime and prezime=@prezime
- select 'RADNIK PREMESTEN'
- end
- else
- begin
- select 'RADNIK JE VEC U TRAZENOM ODELJENJU'
- end
- end
- exec sp_Premesti 'Aleksandar', 'Marić', 'Komercijala'
- 6. ZADATAK
- Kreirati triger trig_RadnikPremija koji samo za promenu vrednosti premije u tabeli radnik
- vraca poruku PREMIJA PROMENJENA.
- create trigger trig_RadnikPremija
- on radnik
- for update
- as
- begin
- if update(premija)
- begin
- select 'PREMIJA PROMENJENA'
- end
- end
- 7. ZADATAK
- Kreirati proceduru sp_Odeljenje sa primenom transakcije. Procedura dodaje novo odeljenje
- cije se ime i mesto zadaju. Ukoliko je ime odeljenja krace od 5 karaktera obustaviti
- transakciju I vratiti poruku TRANSAKCIJA OBUSTAVLJENA u protivnom potvrditi transakciju I
- vratiti poruku TRANSAKCIJA OBAVLJENA.
- create procedure sp_Odeljenje
- @imeod nchar(30),
- @mesto nchar(30)
- as
- begin
- declare @idOdeljenja int
- select @idodeljenja=max(id_odeljenja)
- from odeljenje
- set @idodeljenja=@idodeljenja+10
- begin tran
- insert into odeljenje(id_odeljenja, ime_od, mesto)
- values(@idodeljenja, @imeod, @mesto)
- if len (@imeod)<5
- begin
- rollback
- select 'TRANSAKCIJA OBUSTAVLJENA'
- end
- else
- begin
- commit
- select 'TRANSAKCIJA OBAVLJENA'
- end
- end
- 8. ZADATAK
- Kreirati uskladištenu proceduru sp_PovecajPlatu koja u sistemskoj tabeli ##tempRadnik
- pamti stanje tabele Radnik a potom povećava plate radncima sa zadatom kvalifikacijom za
- zadati iznos. Procedura vraca ime,prezime i platu radnika samo za radnike kojima je plata
- promenjena.
- create procedure sp_PovecajPlatu
- @kvalif nchar(5),
- @procenat real
- as
- begin
- if exists (select * from tempdb.INFORMATION_SCHEMA.TABLES where
- tempdb.INFORMATION_SCHEMA.TABLES.TABLE_NAME='##tempRadnik')
- begin
- truncate table ##tempRadnik
- insert into ##tempRadnik
- select *
- from RADNIK
- end
- else
- begin
- select * into ##tempRadnik
- from RADNIK
- end
- update radnik
- set plata=plata+plata*@procenat/100
- where kvalif=@kvalif
- select ime,prezime,plata
- from ##tempRadnik
- except
- select ime,prezime,plata
- from radnik
- end
- -----------------------------------------------------------------------------------------------------------------------
- GROUPA 1.
- 3. ZADATAK
- Kreirati pogled view_RP koji prikazuje imena, prezimena radnika, njihova primanja I imena projekata na kojima rade samo za radike koji rade na 2 projekta I imaju vise od 10 godina staza.
- create view view_RP
- as
- select ime, prezime, ime_proj, plata+isnull(premija,0) as primanja
- from radnik, projekat, ucesce
- where radnik.id_radnika=ucesce.id_radnika and ucesce.id_projekta=projekat.id_projekta and
- radnik.id_radnika in (select id_radnika from ucesce group by id_radnika having count(Id_projekta)=2)
- and year(sysdatetime())-year(dat_zap)>10
- 2. ZADATAK
- Kreirati funkciju fun_KvalifPremija koja vraca koliko radnika sa zadatom kvalifikacijom nema premiju
- - Prikazati koliko KV radnika nema premiju koristeci funkciju fun_KvalifPremija
- create function fun_KvalifPremija(@kvalif nchar(5))
- returns int
- as
- begin
- declare @brRadnika int
- select @brRadnika=count(id_radnika)
- from radnik
- where @kvalif=kvalif and premija is null
- return @brRadnika
- end
- print dbo.fun_KvalifPremija('KV')
- 5. ZADATAK
- 5. Kreirati triger trig_RadnikPlata koji samo za promenu vrednosti Plate u tabeli Radnik vraca poruku RADNIKU POVECANA PLATA.
- create trigger trig_radnikPlata
- on radnik
- for update
- as
- begin
- if update (plata)
- begin
- select 'RADNIKU POVECANA PLATA'
- end
- end
- 4. ZADATAK
- Kreirati uskladistenu proceduru sp_PovecajPlatu koja radniku cije se ime i prezime zadaje povecava platu za zadati procenat. U slucaju da je plata veca od prosecne palte savetnika vratiti poruku VELIKA PLATA, u protivno vratiti poruku PLATA POVECANA.
- create procedure sp_PovecajPlatu(@ime nchar(30), @prezime nchar(30), @procenat real)
- as
- begin
- declare @savetnikplata int
- declare @plata int
- select @savetnikplata=AVG(plata)
- from radnik
- where posao='savetnik'
- select @plata=plata+plata*@procenat/100
- from radnik
- if(@plata<@savetnikplata)
- begin
- update radnik
- set plata=plata+plata*@procenat/100
- where ime=@ime and prezime=@prezime
- select 'PLATA POVEĆANA'
- end
- else
- begin
- /*select plata
- from radnik
- where ime=@ime and prezime=@prezime/*
- select 'VELIKA PLATA'
- end
- end
- ---------------------------------------------------------
- 3 GRUPA
- 2. ZADATAK
- Kreirati funkciju fun_Projekat koja vraca sve podatke o radnicima koji rade na zadatom projektu i imaju vise od 15 godina staza.
- Prikazati sve podatke o radnicima koji rade projektu Uvoz i imaju vise od 15 godina staza koristeci funkciju.
- create function fun_projekat(@projekat nchar(20))
- returns table
- as
- return
- (
- select dbo.Radnik.*
- from radnik, ucesce,PROJEKAT
- where radnik.id_radnika = UCESCE.Id_radnika and PROJEKAT.Id_projekta = UCESCE.Id_projekta
- and ime_proj=@projekat
- and (year (sysdatetime())-year(dat_zap)>15)
- )
- select *
- from dbo.fun_projekat('Uvoz')
- 5. ZADATAK
- Kreirati triger trig_RadnikProjekat koji u slucaju dodavanja radnika na projekat vraca poruku RADNICI DODATI NA PROJEKAT
- create trigger trig_RadnikProjekat
- on Ucesce
- for insert
- as
- select 'Radnici dodati na projekat'
Add Comment
Please, Sign In to add comment