今天在學習資料庫系統概論的時候,學習到了儲存過程這乙個章節,其中有乙個模擬銀行轉賬的案例,我想著用sqlserver模擬實現一遍,一直沒有寫出來,後來查詢很多資料終於寫出來了.
create table account(
id int primary key,
username varchar(10),
money float
)-- 插入資料
select * from account
insert into account values
(1008611,'小明',10000.0),
(1008612,'徐曉紅',10000.0)
create procedure transfer
@out_cardno int,
@in_cardno int,
@money float
asbegin
declare
@remain float,
@outid int,
@inid int
select @outid=id from account where id=@out_cardno;
select @inid=id from account where id=@in_cardno;
select @remain=money from account where id=@out_cardno;
-- 如果轉賬使用者的餘額小於轉賬金額,則報錯
if @remain
begin
print '餘額不足'
end-- 如果查詢的使用者不存在則報錯
if @outid is null or @inid is null
begin
print '賬戶不存在'
end-- 如果轉賬金額,賬戶都滿足上面的條件則轉賬
if @remain>=@money and @outid is not null and @remain is not null
begin
begin transaction t1
update account set money = money-@money where id=@out_cardno;
update account set money = money+@money where id=@in_cardno;
print '轉賬成功.'
-- 只要不滿足其中之一就回滾
if @remain
begin
rollback transaction;
endcommit transaction t1 -- 提交事務
endend
exec transfer 1008612,1008611,10000.0
結果如下
參考文件
謝謝博主
sql server儲存過程
建立表的語句 create table student sno int primary key,sname nvarchar 30 sgentle nvarchar 2 sage int,sbirth smalldatetime,sdept nvarchar 30 drop table studen...
SQLSERVER儲存過程
sqlserver儲存過程使用說明書 引言首先介紹一下什麼是儲存過程 儲存過程就是將常用的或很複雜的工作,預先用 sql語句寫好並用乙個指定的名稱儲存起來,並且這樣的語句是放在資料庫中的,還可以根據條件執行不同 sql語句,那麼以後要叫資料庫提供與已定義好的儲存過程的功能相同的服務時,只需呼叫 ex...
SQL Server 儲存過程
儲存過程概念 儲存過程優點 儲存過程的介面 儲存過程的解析 編譯過程 儲存過程安全性 檢視儲存過程 加密 解密儲存過程 儲存過程概念 儲存過程 stored procedure 是一組為了完成特定功能的sql語句集,經編譯後儲存在資料庫中。使用者通過指定儲存過程的名字並給出引數 帶參儲存過程 來執行...