標籤:類比銀行預存程序 經典預存程序
利用預存程序來實現下面的應用:
從一個賬戶轉指定數額的款項到另一個賬戶中。
*/ 建表: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 [email protected]
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 [email protected] ) /* 檢查轉入賬戶是否存在 */ BEGIN
UPDATE account SET [email protected] WHERE [email protected] /* 修改轉出賬戶,減去轉出額 */
UPDATE account SET [email protected] WHERE [email protected] /* 修改轉入賬戶,增加轉出額 */
COMMIT TRANSACTION /* 提交轉賬事務 */
PRINT ‘轉賬成功,謝謝使用本預存程序!‘
RETURN
END
ELSE
BEGIN
ROLLBACK TRANSACTION
PRINT ‘轉入賬戶不存在,不能操作!‘
RETURN
END
經典預存程序;SQl 預存程序