利用存储过程来实现下面的应用:
从一个账户转指定数额的款项到另一个账户中。
*/ 建表:create table account(accountnum int,uname char(10),total float)
insert into account values(1001,'u1',50000)
insert into account values(1002,'u2',1000)
select * from account
建存储过程:
CREATE PROCEDURE TRANSFER
@outAccount int,
@inAccount int,
@amount
FLOAT AS
DECLARE @totalDeposit FLOAT
BEGIN TRANSACTION /* 检查转出账户的余额 */ SELECT @totalDeposit=total FROM ACCOUNT WHERE ACCOUNTNUM=@outAccount
IF @totalDeposit IS NULL /* 转出账户不存在或账户中没有存款 */ BEGIN ROLLBACK TRANSACTION
PRINT '转出账户不存在或账户中没有存款,不能操作!'
RETURN
END
IF @totalDeposit<@amount /* 转出账户存款不足 */
BEGIN
ROLLBACK TRANSACTION
PRINT '转出账户存款不足,不能操作!' /* 建议使用函数RAISERROR('转出账户存款不足,不能操作!',10,1) */
RETURN
END
IF exists(SELECT * FROM ACCOUNT WHERE ACCOUNTNUM=@inAccount ) /* 检查转入账户是否存在 */ BEGIN
UPDATE account SET total=total-@amount WHERE ACCOUNTNUM=@outAccount /* 修改转出账户,减去转出额 */
UPDATE account SET total=total+@amount WHERE ACCOUNTNUM=@inAccount /* 修改转入账户,增加转出额 */
COMMIT TRANSACTION /* 提交转账事务 */
PRINT '转账成功,谢谢使用本存储过程!'
RETURN
END
ELSE
BEGIN
ROLLBACK TRANSACTION
PRINT '转入账户不存在,不能操作!'
RETURN
END
本文转自程序猿博客51CTO博客,原文链接http://blog.51cto.com/haihuiwei/1704845如需转载请自行联系原作者
365850153