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

银行转账存储过程

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 [email protected];

if @totalDeposit is null

begin

rollback;

print‘转出账户不存在或账户中没有存款‘

return;

end

if @totalDeposit<@amount

begin

rollback;

print‘余额不足,不能操作‘

return;

end

update Account set [email protected] where [email protected];

update Account set [email protected] where [email protected];

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 [email protected]

Select @sValue = sValue From SerialNo where [email protected]

Select @sQZ = sQZ From SerialNo where [email protected]

-- 因子表中没有记录,插入初始值

If @sValue is null

Begin

Select @sValue = convert(bigint, convert(varchar(6), getdate(), 12) + ‘000001‘)

Update SerialNo set [email protected] where [email protected]

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 [email protected] where [email protected]

End

Select result = @[email protected]

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-10-12 21:31:19

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

Mysql创建视图,生成存储过程

-- select * from (SELECT nid from part where nid > 2) as A -- create view V1 AS -- create view V1 AS #创建视图 -- select man_to_woman.nid,man.name as mname,woman.name as wname from man_to_woman -- LEFT JOIN man ON man_to_woman.man_id = man.nid -- LEFT JO

生成存储过程代码

下面是自动产生存储过程的sql 脚本,你可以在查询分析器中运行. 运行完,你会看到多了四个存储过程 pr__SYS_MakeInsertRecordProc pr__SYS_MakeUpdateRecordProc pr__SYS_MakeSelectRecordProc pr__SYS_MakeDeleteRecordProc 执行方式:在查询分析器中执行 pr__SYS_MakeInsertRecordProc '表名' --得到插入语句 pr__SYS_MakeInsertRecordPr

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

MySQL存储过程详解  mysql 存储过程 (2010-12-13 10:59:38) 转载▼ 标签: it 分类: mysql mysql存储过程详解 1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它. 一个存储过程是一个可编程的函数,它在数据库中创建并保

MySQL存储过程详解 mysql 存储过程(转:http://blog.sina.com.cn/s/blog_52d20fbf0100ofd5.html)

转:http://blog.sina.com.cn/s/blog_52d20fbf0100ofd5.html mysql存储过程详解 1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它. 一个存储过程是一个可编程的函数,它在数据库中创建并保存.它可以有SQL语句和

MySQL存储过程详解 mysql 存储过程(二)

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

MySQL存储过程详解 mysql 存储过程(转)

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

iBatis调用存储过程以及MySQL创建存储过程

首先是MySQL中创建存储过程的SQL -- 列出所有的存储过程 SHOW PROCEDURE STATUS; -- 查看一个已存在的存储过程的创建语句,如果此存储过程不存在,会提示SQL错误(1305):PROCEDURE pro_init does not exist SHOW CREATE PROCEDURE pro_init; -- 创建存储过程 DROP PROCEDURE IF EXISTS pro_init; -- 删除一个已存在的存储过程 DELIMITER // -- 声明当前

mssql 存储过程调用另一个存储过程中的结果的方法分享

摘要:下文将分享"一个存储过程"中如何调用"另一个存储过程的返回结果",并应用到自身的运算中 在实际开发中,我们经常会遇到在一个存储过程中调用另一个存储过程的返回结果(存储过程相互应用), 实现思路:主要采用临时表将存储过程返回的结果集进行存储,然后供另一个存储过程应用.如下所示: create proc pr_b @a int,@b int as begin select @a as a @b as b union all select @a+1 as a @b+

SqlServer获取流水号的存储过程

创建流水号表 CREATE TABLE SystemSerialNo ( SerialNoId INT PRIMARY KEY IDENTITY, TableName VARCHAR(60), Prefix VARCHAR(20), LatestDate VARCHAR(8), MaxSerialNo INT , DataVersion timestamp ) 创建存储过程 -- Author: <CallmeYhz,,Name> -- Create date: <Create Date