Näide

Создание двух таблиц и заполнение данных

create table tblPhysicalAddress(
AddressId int primary key identity(1,1),
EmployeeNumber varchar(4),
HouseNumber varchar(3),
StreetAddress varchar(50),
City varchar(50),
PostalCode varchar(6)
);

create table tbMailingAddress(
AddressId int primary key identity(1,1),
EmployeeNumber varchar(4),
HouseNumber varchar(3),
StreetAddress varchar(50),
City varchar(50),
PostalCode varchar(6)
);


insert into tblPhysicalAddress(EmployeeNumber, HouseNumber, StreetAddress, City, PostalCode)
Values('101', '#10', 'King Street', 'London', 'CR27DW');

insert into tbMailingAddress(EmployeeNumber, HouseNumber, StreetAddress, City, PostalCode)
Values('101', '#10', 'King Street', 'London', 'CR27DW');
select * from tblPhysicalAddress;
select * from tbMailingAddress;

Готовые таблицы с данными

Процедура:
При запуске процедуры в таблице tbMailingAddress ( где AddressId равен 1 и EmployeeNumber равен 101 ) поле City меняет значение на London. А в таблице tbMailingtblPhysicalAddress (где AddressId равен 1 и EmployeeNumber равен 101 ) поле City меняет значение на Tartu. Также после успешной выводится текст. В процедуре используется try catch, чтобы в случае ошибки процедура откатилась в прежнее состояние.

create procedure spUpdateAddress
as
Begin
Begin try
begin transaction
update tbMailingAddress set City ='London'
where AddressId = 1 and EmployeeNumber = '101'

update tblPhysicalAddress set City ='Tartu'
where AddressId = 1 and EmployeeNumber = '101'
Commit transaction
print 'Transaction Committed'
end try
begin catch
rollback transaction
print 'Transaction Rolled Back'
end catch
end

Вызов процедуры:

exec spUpdateAddress;
select * from tblPhysicalAddress;
select * from tbMailingAddress