SQL protseduurid\ SQL Server

CREATE TABLE linnad(
    linnID int PRIMARY KEY identity(1,1),
    linnanimi varchar(25) UNIQUE,
    rahvaarv int)


	insert into linnad(linnanimi, rahvaarv)
	values('Paldiski',10000);

	select * from linnad


	-- kuvab tabelist linnad 2 veergu
	use protseduuridMiljukova;
	go
	create procedure lihtneSelect
	as
	begin
	select linnanimi, rahvaarv
	from linnad;
	end
	--protseduuri käivitamine
	exec lihtneSelect;
	--lisamine tabelisse
	use protseduuridMiljukova;
	go
	create procedure lisaLinn
	@nimi varchar(30),
	@rahvaKogus int
	as
	begin
	insert into linnad(linnanimi, rahvaarv)
	values(@nimi, @rahvaKogus);
	select * from linnad;
	end
	--käivitamine
	exec lisaLinn @nimi='Valga', @rahvaKogus=15000;
use protseduuridMiljukova;
	go
	create procedure suuremKui
	@rahvaKogus int
	as
	begin
	select * from linnad
	where rahvaarv > @rahvaKogus;
	end

	exec suuremKui @rahvaKogus=100000;
	use protseduuridMiljukova;
	go
	create procedure linnaOtsing
	@taht char(1)
	as
	begin
	select * from linnad
	where linnanimi like @taht + '%';
	end

	exec linnaOtsing 'T';
	exec linnaOtsing @taht='T'
use protseduuridMiljukova;
	go
	create procedure linnaKustutamine
	@kustutaID int
	as
	begin
	select * from linnad;

	delete from linnad
	where linnID=@kustutaID;

	select * from linnad;
	end
exec linnaKustutamine @kustutaID=3
	use protseduuridMiljukova;
	go
	create procedure hinnaaeg
	as
	begin
	select linnanimi, rahvaarv,
	iif(rahvaarv>100000, 'Suur linn', 'Väile linn') as hinnnaeg
	from linnad;
	end
	exec hinnaaeg
--looge tabel
create table zanrid(
zanrID int PRIMARY KEY identity(1,1),
zanrnimi varchar(25) UNIQUE,
zanrKirjeldus varchar(30))
Select * from zanrid

insert into zanrid(zanrnimi, zanrKirjeldus)
values('Draama','See artikkel on zanrist.');
select * from zanrid
--Žanri kustutamine selle ID järgi
use protseduuridMiljukova;
	go
	create procedure zanridKustutamine
	@kustutaID int
	as
	begin
	select * from zanrid;

	delete from zanrid
	where zanrID=@kustutaID;

	select * from zanrid;
	end

	exec zanridKustutamine @kustutaID=4

--
Otsige kirja järgi
use protseduuridMiljukova;
	go
	create procedure zanrOtsing
	@taht char(1)
	as
	begin
	select * from zanrid
	where zanrnimi like @taht + '%';
	end

	exec zanrOtsing @taht='D'
use protseduuridMiljukova;
	go
	create procedure StruktuuriMuutmine
	@tegevus varchar(20),
	@tabelinimi varchar(20),
	@veerunimi varchar(20),
	@tyyp varchar(20)=null
	as
	BEGIN
	declare @sqltegevus as varchar(max)
	set @sqltegevus=case
	when @tegevus='lisa' then concat('ALTER TABLE ', @tabelinimi, ' ADD ', @veerunimi, ' ', @tyyp)
	when @tegevus='kustuta' then concat('ALTER TABLE ', @tabelinimi, ' DROP COLUMN ', @veerunimi)
	END;
	print @sqltegevus;
	begin
	exec (@sqltegevus);
	end
	end

	--käivitamine ja veergu lisamine
	exec StruktuuriMuutmine @tegevus='lisa', @tabelinimi='linnad', @veerunimi='test', @tyyp='int';
	--veergu kustutamine
	exec StruktuuriMuutmine @tegevus='kustuta', @tabelinimi='linnad', @veerunimi='test';
	select * from linnad
create procedure StruktuuriMuutmine2
	@valik varchar(20),
	@tabelinimi varchar(20),
	@veerunimi varchar(20),
	@tyyp varchar(20)=null
	as
	BEGIN
	declare @sqltegevus as varchar(max)

	if @valik='lisa' 
	set @sqltegevus=concat('ALTER TABLE ', @tabelinimi, ' ADD ', @veerunimi, ' ', @tyyp)
	execute(@sqltegevus);

	if @valik='kustuta' 
	set @sqltegevus=concat('ALTER TABLE ', @tabelinimi, ' DROP COLUMN ', @veerunimi)
	execute(@sqltegevus);
	end

	--käivitamine ja veergu lisamine
	exec StruktuuriMuutmine2 @valik='lisa', @tabelinimi='linnad', @veerunimi='vanus', @tyyp='int';
	--veergu kustutamine
	exec StruktuuriMuutmine2 @valik='kustuta', @tabelinimi='linnad', @veerunimi='test2';
	select * from linnad