http://blog.csdn.net/chimomo/archive/2010/10/21/5957231.aspx
关于create procedure的说明在上述网页中有很详细的说明。
下面程序为个人注释版。
create procedure TransferMoney
{
@FromAccountNo varchar(50),-- 转出账号
@ToAccountNo varchar(50),--转入账号
@MoneyCount money--转账金额
}
as --(as后)开始数据库处理语句块
--判断账号是否存在
if exists (select 1 from 帐户表 where 账号 = @FromAccountNo)
begin
if exists (select 1 from 帐户表 where 账号 = @ToAccountNo)
begin --转出账户和转入账户都存在,则开始转账
--判断转出金额是否大于当前余额
if (select 当前余额 from 帐户表 where 账号 = @FromAccountNo) >= @MoneyCount
begin
--开始转账
begin transaction --事务转账开始
insert into [存取记录表] ([账号],[存取类型], [存取金额]) values(@FromAccountNo, -1,@MoneyCount)--(-1)代表存取类型
if @@error <> 0
begin
rollback transaction--发生错误则回滚事务,无条件退出l
return
end
insert into [存取记录表] ([账号],[存取类型], [存取金额]) values(@ToAccountNo, 1,@MoneyCount)
if @@error <> 0
begin
rollback tran
return
end
commit transaction --两条语句都完成,提交事务
end
else
raiserror ('转账金额不能大于该账号的余额',16,1)
end
else
raiserror ('转入账号不存在',16,1)
end
else
raiserror ('转出账号不存在',16,1)
-------------未完---------------