Salvestatud protseduurid BACKUP DATABASE baas1 TO DISK='c:\jaagup\esimene.bak' RESTORE FILELISTONLY FROM DISK='c:\jaagup\esimene.bak' RESTORE DATABASE proov2 FROM DISK = 'c:\jaagup\esimene.bak' WITH MOVE 'baas1' TO 'c:\jaagup\proov2db.mdf', MOVE 'baas1_log' TO 'c:\jaagup\proov2db.ldf' use baas1 select * from lapsed BEGIN TRANSACTION INSERT INTO lapsed (eesnimi, pikkus, synniaasta) VALUES ('Juhan', 180, 1065) -- ROLLBACK TRANSACTION COMMIT TRANSACTION IF EXISTS (SELECT * FROM lapsed WHERE eesnimi='Juhkam') begin print 'kuku' end CREATE VIEW pikadlapsed AS SELECT eesnimi, pikkus FROM lapsed WHERE pikkus > 160 SELECT * FROM pikadlapsed SELECT AVG(pikkus) FROM pikadlapsed SELECT * FROM lapsed WHERE pikkus> (SELECT AVG(pikkus) FROM pikadlapsed) INSERT INTO lapsed(eesnimi, synniaasta, pikkus) VALUES ('Mati', 1970, 195); CREATE TABLE ryblikud( id int identity not null primary key, eesnimi varchar(20), pikkus int ) insert into ryblikud (eesnimi, pikkus) values ('Priit', 123) CREATE PROCEDURE kysiLapsed(@algaasta decimal) AS SELECT eesnimi, synniaasta FROM lapsed WHERE synniaasta>=@algaasta Exec kysiLapsed 1980 select * from (kysilapsed(1980)) CREATE PROCEDURE lisaAuto(@mark varchar(20), @regnr char(6), @aasta int, @maakonnanimi varchar(20))AS DECLARE @uus_id integer IF EXISTS (SELECT * FROM maakonnad WHERE maakonnanimi=@maakonnanimi) BEGIN SET @uus_id=(SELECT id FROM maakonnad WHERE maakonnanimi=@maakonnanimi) INSERT INTO autod(mark, regnr, aasta, maakonna_id) VALUES (@mark, @regnr, @aasta, @uus_id) END ELSE print 'probleem' drop procedure lisaAuto Exec lisaAuto 'Ziguli', '778ABE', 1978, 'Kalamaa' SELECT * FROM autod SELECT * FROM maakonnad DECLARE @i AS int SET @i = 1980 WHILE @i<=1990 BEGIN INSERT INTO autod (mark, regnr, aasta, maakonna_id) VALUES ('Volga', '123KRL', @i, 1) set @i=@i+1 END create table kontod( id int identity not null primary key, saldo money ) insert into kontod(saldo) values(.6) select * from kontod drop procedure ylekanne go create procedure ylekanne (@kust int, @kuhu int, @summa money) as declare @korras as int set @korras=1 begin transaction if (select saldo from kontod where id=@kust)>=@summa begin update kontod set saldo=saldo-@summa where id=@kust end else begin set @korras=0 raiserror('raha otsas', 1, 1) end if exists(select saldo from kontod where id=@kuhu) begin update kontod set saldo=saldo+@summa where id=@kuhu end else begin set @korras=0 end if @korras=1 commit transaction else begin rollback transaction print 'probleem' end select * from kontod where id in (@kust, @kuhu) SELECT * FROM kontod EXEC ylekanne 1, 4, 100 EXEC ylekanne 4, 1, 500 --- Tutvu päästikute näitega --- Logi kontodel toimunud muutused automaatselt omaette tabelisse