Protseduuri

Create table kool(
Id int primary key identity(1,1),
KoolNimi varchar(50) unique,
aadress text,
telefon varchar (13),
regNumber varchar(10)
);

insert into kool(KoolNimi,aadress)
values ('Tallinna kool','Tehnika 18, Tallinn');

select * from kool;

-- protseduuri 
use AleksanderKaasikTARgv23;
go
create procedure HelloKool
AS
BEGIN
	select * from kool;
END;

-- protseduuri kutsumine
use AleksanderKaasikTARgv23;
-- sql server
exec HelloKool;
--phpmyadmin
call HelloKool


-- protseduuri kutsumine/delete
use AleksanderKaasikTARgv23;
drop procedure HelloKool;

-- kasutaja sisestab kooli esimene taht ja siis kuvatakse kõol kooli andmed
use AleksanderKaasikTARgv23;
go
create procedure KoolOstsing
	@taht varchar(1)
AS
BEGIN
	select * from kool
	where KoolNimi like @taht + '%';
END;

-- kutse
-- sql server
exec KoolOstsing @taht='T';
--phpmyadmin
call KoolOstsing('T');


--kasutaja susestab ainult tabrliväärtused ja siis tabel täifrtakse
use AleksanderKaasikTARgv23;
go
create procedure LisaKool
	@kNimi varchar(50),
	@aadress text,
	@telefon varchar(13),
	@reg varchar(10)
as
begin
	insert into kool(KoolNimi,aadress,telefon,regNumber)
	values (@kNimi,@aadress,@telefon,@reg);
	select * from kool;
end;

--kutse
exec LisaKool 'Aiaduskool','Räpina','123456789','123456789'

-- kustutab üks kirje/rida id järgi
use AleksanderKaasikTARgv23;
go
create procedure KustutaKool
	@DeleteId int	
as
begin
	select * from kool;
	delete from kool where id = @DeleteId;
	select * from kool;
end;

--kutse
exec KustutaKool 3

-- proceduur küsib mida ona vaja thea -kas lisada veergy ADD või kustutada DROP COLUMN
CREATE PROCEDURE muudatus
@tegevus varchar(10),
@tabelinimi varchar(25),
@veerunimi varchar(25),
@tyyp varchar(25) =null
AS
BEGIN
DECLARE @sqltegevus as varchar(max)
set @sqltegevus=case 
	when @tegevus='add' then concat('ALTER TABLE ', @tabelinimi, ' ADD ', @veerunimi, ' ', @tyyp)
	when @tegevus='drop' then concat('ALTER TABLE ', @tabelinimi, ' DROP COLUMN ', @veerunimi)
END;
print @sqltegevus;
begin 
EXEC (@sqltegevus);
END
END;
--добавление столбца
EXEC muudatus @tegevus='add', @tabelinimi='kool', @veerunimi='test', @tyyp='int';
--удаление столбца
EXEC muudatus @tegevus='drop', @tabelinimi='kool', @veerunimi='test';

--uuidada OpilasterArv if jägi
CREATE PROCEDURE OpilasterA
	@OpilastArv int,
	@OpilastId int
as
begin
	update kool set OpilasterArv = @OpilastArv
	where Id = @OpilastId;
end;

exec HelloKool;
exec OpilasterA @OpilastArv=25, @OpilastId=1;
exec HelloKool;