国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > SQL Server > 正文

實(shí)用的銀行轉(zhuǎn)賬存儲(chǔ)過程和流水號(hào)生成存儲(chǔ)過程

2024-08-31 01:03:15
字體:
供稿:網(wǎng)友

本篇文章給大家分享銀行轉(zhuǎn)賬存儲(chǔ)過程和流水號(hào)生成存儲(chǔ)過程,感興趣的朋友一起看看吧

銀行轉(zhuǎn)賬存儲(chǔ)過程

 

 
  1. USE [BankInfor] 
  2. GO 
  3. SET ANSI_NULLS ON 
  4. GO 
  5. SET QUOTED_IDENTIFIER ON 
  6. GO 
  7. ALTER PROCEDURE [dbo].[Transfer](@inAccount int,@outAccount int,@amount float
  8. as declare 
  9. @totalDeposit float
  10. begin 
  11. select @totalDeposit=total from Account where AccountNum=@outAccount; 
  12. if @totalDeposit is null 
  13. begin 
  14. rollback; 
  15. print'轉(zhuǎn)出賬戶不存在或賬戶中沒有存款' 
  16. return
  17. end 
  18. if @totalDeposit<@amount 
  19. begin 
  20. rollback; 
  21. print'余額不足,不能操作' 
  22. return
  23. end 
  24. update Account set total=total-@amount where AccountNum=@outAccount; 
  25. update Account set total=total+@amount where AccountNum=@inAccount; 
  26. print'轉(zhuǎn)賬成功!' 
  27. commit; 
  28. end; 

流水號(hào)生成存儲(chǔ)過程

 

 
  1. if exists(select 1 from sysobjects where id=OBJECT_ID('GetSerialNo') and xtype='p'
  2. drop proc GetSerialNo 
  3. go 
  4. Create procedure [dbo].[GetSerialNo]  
  5. (  
  6. @sCode varchar(50)  
  7. )  
  8. as 
  9. begin 
  10. Declare @sValue varchar(16),@dToday datetime,@sQZ varchar(50) --這個(gè)代表前綴  
  11. Begin Tran  
  12. Begin Try  
  13. -- 鎖定該條記錄,好多人用lock去鎖,起始這里只要執(zhí)行一句update就可以了  
  14. --在同一個(gè)事物中,執(zhí)行了update語句之后就會(huì)啟動(dòng)鎖  
  15. Update SerialNo set sValue=sValue where sCode=@sCode  
  16. Select @sValue = sValue From SerialNo where sCode=@sCode  
  17. Select @sQZ = sQZ From SerialNo where sCode=@sCode  
  18. -- 因子表中沒有記錄,插入初始值  
  19. If @sValue is null 
  20. Begin 
  21. Select @sValue = convert(bigint, convert(varchar(6), getdate(), 12) + '000001')  
  22. Update SerialNo set sValue=@sValue where sCode=@sCode  
  23. end else 
  24. Begin --因子表中沒有記錄  
  25. Select @dToday = substring(@sValue,1,6)  
  26. --如果日期相等,則加1  
  27. If @dToday = convert(varchar(6), getdate(), 12)  
  28. Select @sValue = convert(varchar(16), (convert(bigint, @sValue) + 1))  
  29. else --如果日期不相等,則先賦值日期,流水號(hào)從1開始  
  30. Select @sValue = convert(bigint, convert(varchar(6), getdate(), 12) +'000001')  
  31. Update SerialNo set sValue =@sValue where sCode=@sCode  
  32. End 
  33. Select result = @sQZ+@sValue  
  34. Commit Tran  
  35. End Try  
  36. Begin Catch  
  37. Rollback Tran  
  38. Select result = 'Error' 
  39. End Catch  
  40. end 
  41. select*from SerialNo 
  42. select convert(varchar(6), getdate(), 12)+'000001' 

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 泸州市| 天镇县| 兰考县| 湘乡市| 德安县| 神农架林区| 开封县| 安福县| 怀化市| 会理县| 莫力| 永新县| 桦川县| 乌鲁木齐县| 车致| 阜城县| 徐汇区| 梨树县| 许昌县| 武乡县| 民勤县| 铜陵市| 安乡县| 杭锦旗| 丰台区| 西藏| 陕西省| 朔州市| 丰宁| 农安县| 宜川县| 夏津县| 西藏| 开阳县| 南华县| 京山县| 迭部县| 于都县| 霞浦县| 邛崃市| 和田市|