實(shí)用的銀行轉(zhuǎn)賬存儲(chǔ)過(guò)程和流水號(hào)生成存儲(chǔ)過(guò)程
發(fā)布日期:2021-12-22 20:29 | 文章來(lái)源:CSDN
銀行轉(zhuǎn)賬存儲(chǔ)過(guò)程
USE [BankInfor] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[Transfer](@inAccount int,@outAccount int,@amount float) as declare @totalDeposit float; begin select @totalDeposit=total from Account where AccountNum=@outAccount; if @totalDeposit is null begin rollback; print'轉(zhuǎn)出賬戶(hù)不存在或賬戶(hù)中沒(méi)有存款' return; end if @totalDeposit<@amount begin rollback; print'余額不足,不能操作' return; end update Account set total=total-@amount where AccountNum=@outAccount; update Account set total=total+@amount where AccountNum=@inAccount; print'轉(zhuǎn)賬成功!' commit; end;
流水號(hào)生成存儲(chǔ)過(guò)程
if exists(select 1 from sysobjects where id=OBJECT_ID('GetSerialNo') and xtype='p')
drop proc GetSerialNo
go
Create procedure [dbo].[GetSerialNo]
(
@sCode varchar(50)
)
as
begin
Declare @sValue varchar(16),@dToday datetime,@sQZ varchar(50) --這個(gè)代表前綴
Begin Tran
Begin Try
-- 鎖定該條記錄,好多人用lock去鎖,起始這里只要執(zhí)行一句update就可以了
--在同一個(gè)事物中,執(zhí)行了update語(yǔ)句之后就會(huì)啟動(dòng)鎖
Update SerialNo set sValue=sValue where sCode=@sCode
Select @sValue = sValue From SerialNo where sCode=@sCode
Select @sQZ = sQZ From SerialNo where sCode=@sCode
-- 因子表中沒(méi)有記錄,插入初始值
If @sValue is null
Begin
Select @sValue = convert(bigint, convert(varchar(6), getdate(), 12) + '000001')
Update SerialNo set sValue=@sValue where sCode=@sCode
end else
Begin --因子表中沒(méi)有記錄
Select @dToday = substring(@sValue,1,6)
--如果日期相等,則加1
If @dToday = convert(varchar(6), getdate(), 12)
Select @sValue = convert(varchar(16), (convert(bigint, @sValue) + 1))
else --如果日期不相等,則先賦值日期,流水號(hào)從1開(kāi)始
Select @sValue = convert(bigint, convert(varchar(6), getdate(), 12) +'000001')
Update SerialNo set sValue =@sValue where sCode=@sCode
End
Select result = @sQZ+@sValue
Commit Tran
End Try
Begin Catch
Rollback Tran
Select result = 'Error'
End Catch
end
select*from SerialNo
select convert(varchar(6), getdate(), 12)+'000001'
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。
相關(guān)文章
關(guān)注官方微信