实用的银行转账存储过程和流水号生成存储过程

银行转账存储过程

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'转出账户不存在或账户中没有存款' 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'转账成功!' commit; end;

流水号生成存储过程

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) --这个代表前缀 Begin Tran Begin Try -- 锁定该条记录,好多人用lock去锁,起始这里只要执行一句update就可以了 --在同一个事物中,执行了update语句之后就会启动锁 Update SerialNo set sValue=sValue where sCode=@sCode Select @sValue = sValue From SerialNo where sCode=@sCode Select @sQZ = sQZ From SerialNo where sCode=@sCode -- 因子表中没有记录,插入初始值 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 --因子表中没有记录 Select @dToday = substring(@sValue,1,6) --如果日期相等,则加1 If @dToday = convert(varchar(6), getdate(), 12) Select @sValue = convert(varchar(16), (convert(bigint, @sValue) + 1)) else --如果日期不相等,则先赋值日期,流水号从1开始 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'

时间: 2024-07-31 01:47:38

实用的银行转账存储过程和流水号生成存储过程的相关文章

实用的银行转账存储过程和流水号生成存储过程_MsSql

银行转账存储过程 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

超级简单:共享两个自动生成存储过程的工具

开发一个项目或者开发一个应用系统初期大多数都是从数据库,类,UI界面 开始的.其中最令人厌烦的是写些简单的CRUD的存储过程,以及调用这些存储过 程的方法的类. 我花了很多时间在网上寻找,去找一个能根据能数据库中一个存在的数据表 ,为我们产生大部分存储过程和调用这些存储过程C#代码的实用的程序.这里共 享两个我觉得还不错的程序给大家. 第一个是SQLAutoGen,如下图:

有没有自动生成存储过程的工具?

问题描述 谢谢高手啊,我想下载一个那样的工具了!! 解决方案 解决方案二:好像没有啊!自己写吧解决方案三:有..你去搜一下李天平的动软.net代码生成器,,里面有生成存储过程的..解决方案四:哦,谢谢高手啦

sql生成(插入、修改、删除数据的存储过程)代码的存储过程

GO /****** 对象: StoredProcedure [dbo].[pro_GenerateProSet] 脚本日期: 08/03/2012 11:26:43 ******/ IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[pro_GenerateProSet]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[pro_GenerateP

MySQL存储过程详解 mysql 存储过程

mysql存储过程详解 1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它. 一个存储过程是一个可编程的函数,它在数据库中创建并保存.它可以有SQL语句和一些特殊的控制结构组成.当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的

SQL SERVER编写存储过程小工具_存储过程

在开发数据库系统的过程中,经常要写很多的存储过程.为了统一格式和简化开发过程,我编写一些存储过程,用来自动生成存储过程.下面就为您简单介绍一下它们.其中一个用于生成Insert过程,另一个用于生成Update过程.  Sp_GenInsert  该过程运行后,它为给定的表生成一个完整的Insert过程.如果原来的表有标识列,您得将生成的过程中的SET IDNTITY_INSERT ON 语句手工删除.  语法如下  sp_GenInsert < Table Name >,< Stored

access如何用代码在“默认值”里实现自动编号?单据流水号生成问题。

access|流水号|问题 如何用代码在"默认值"里实现自动编号?单据流水号生成问题.  简述:单据流水号生成问题    问题: 如何用代码在"默认值"里实现自动编号?单据流水号生成问题. 如何用代码在"默认值"里实现自动编号?如果我想实现不同类型的自动编号,我应该怎么设置代码呢?如:第1号.第2号.............第198号..................或:CN0001-A.CN0002-B.CN0003-B...........

如何在存储过程中执行别的存储过程并获取其返回的结果集

背景 在sqlserver存储过程的编写过程中,通常会碰到繁杂的业务逻辑,将一个大的存储过程拆分成多个小存储过程来做是常用的做法. 问题 在存储过程A中需要调用存储过程B,而存储过程B返回一个Table,A需要获取到B的Table,再进行下一步的处理. 本文解决的问题是:如何在A中执行B,并获取B的返回Table 思路 在A中使用Exec来执行存储过程B 在A中定义临时表,并将B返回的数据插入临时表中 步骤 新建一张测试表,并批量向表中插入若干数据 CREATE TABLE TestTable

java存储过程-java调用oracle存储过程到execute()就卡住了?

问题描述 java调用oracle存储过程到execute()就卡住了? debug看了一下就是走到execute()这就卡住了,是偶尔才发生这样的状况,一般这样的情况等待10分钟左右就没有问题了,在execute()这就不会卡住了,很快就执行过去. 我感觉是系统中有很多用户都在做各种不同的操作占用了oracle的什么资源(我们这个系统中有不少操作都是用存储过程实现的),导致执行存储过程时,一直再等待这个资源,希望有大神能告诉我是什么原因导致的?谢谢 解决方案 java调用oracle存储过程用