一个四用户信息同步更新的存储过程

存储过程

不实用,之所以写,一为领导的要求,另外也熟悉下写代码,代码多写点也没什么坏处,并且写了之后发现临时表还挺容易用的,数据量小的时候,并显不出临时表速度不行的问题.

代码如下:

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
/*
Name:游戏中四人数据同时更新
Designed By :whbo
Designed At :2005-10-12
Modified By :
Modified At :
Memo:
*/

ALTER   PROC [PrMoney_UpdateCash2]
@chvModeName varchar(16),
@chvSourceName varchar(64),
@chvRemark varchar(128),
@intUserID1 int,
@intUserID2 int,
@intUserID3 int,
@intUserID4 int,
@intWantedAmount1 int,
@intWantedAmount2 int,
@intWantedAmount3 int,
@intWantedAmount4 int,
@chvIPAddress1 varchar(15),
@chvIPAddress2 varchar(15),
@chvIPAddress3 varchar(15),
@chvIPAddress4 varchar(15),
@inyLog tinyint
as
set nocount on
set xact_abort on
Declare @intCashAmount1 int,@intCashAmount2 int,@intCashAmount3 int,@intCashAmount4 int
Declare @FRate float,@FTemp float
Declare @bNeedReCalc bit  --0:不用重算 ;1:需要重算
set @FRate=1.0
set @FTemp=1.0
set @bNeedReCalc=0
Declare @FTemp1 float,@FTemp2 float,@FTemp3 float,@FTemp4 float

--这里要注意,更新用户现金取数据库中的数据,跟游戏服务器能否保持一致
--取得用户现金
select @intCashAmount1=[Amount] from [dbo].[Money] where [UserID]=@intUserID1
select @intCashAmount2=[Amount] from [dbo].[Money] where [UserID]=@intUserID2
select @intCashAmount3=[Amount] from [dbo].[Money] where [UserID]=@intUserID3
select @intCashAmount4=[Amount] from [dbo].[Money] where [UserID]=@intUserID4

Create Table #Temp1(TTemp float)

if @intCashAmount1+@intWantedAmount1<0
 begin
  set @FTemp=-@intCashAmount1/@intWantedAmount1
  insert into #temp1 values(@FTemp)
 end

if @intCashAmount2+@intWantedAmount2<0
 begin
  set @FTemp=-@intCashAmount2/@intWantedAmount2
  insert into #temp1 values(@FTemp)
 end

if @intCashAmount3+@intWantedAmount3<0
 begin
  set @FTemp=-@intCashAmount3/@intWantedAmount3
  insert into #temp1 values(@FTemp)
 end

if @intCashAmount4+@intWantedAmount4<0
 begin
  set @FTemp=-@intCashAmount4/@intWantedAmount4
  insert into #temp1 values(@FTemp)
 end

set @FTemp=(select min(@FTemp) from #temp)
drop table #temp1

if @FTemp<@FRate
begin
 set @FRate=@FTemp
 set @BNeedReCalc=1
end

if @BNeedReCalc=1
begin
 set @intWantedAmount1=@intWantedAmount1*@FRate
 set @intWantedAmount2=@intWantedAmount2*@FRate
 set @intWantedAmount3=@intWantedAmount3*@FRate
 set @intWantedAmount4=@intWantedAmount4*@FRate
end

begin tran
exec [prMoney_UpdateCash]
 @chvModeName,   -- 通过什么方式,如'WEB'、'GameServer'等
 @chvSourceName,  -- 方式的源,如'金币麻将服务器'、'虚拟股市'等
 @chvRemark,  -- 其它信息 注释.
 @intUserID1,    -- 用户ID
 0, -- 相关的用户ID
 @intWantedAmount1,   -- 希望更新的数量(>0 加金, <0 扣金)
 0,    -- 税金(税金>0,要在现金中扣除,游戏服务器可以置为0)
 @chvIPAddress1,  -- IP地址
 0, -- 机器码
 1    -- 是否做Log,如果>0,则表示做Log,否则不做Log

exec [prMoney_UpdateCash]
 @chvModeName,   -- 通过什么方式,如'WEB'、'GameServer'等
 @chvSourceName,  -- 方式的源,如'金币麻将服务器'、'虚拟股市'等
 @chvRemark,  -- 其它信息 注释.
 @intUserID2,    -- 用户ID
 0, -- 相关的用户ID
 @intWantedAmount2,   -- 希望更新的数量(>0 加金, <0 扣金)
 0,    -- 税金(税金>0,要在现金中扣除,游戏服务器可以置为0)
 @chvIPAddress2,  -- IP地址
 0, -- 机器码
 1    -- 是否做Log,如果>0,则表示做Log,否则不做Log

exec [prMoney_UpdateCash]
 @chvModeName,   -- 通过什么方式,如'WEB'、'GameServer'等
 @chvSourceName,  -- 方式的源,如'金币麻将服务器'、'虚拟股市'等
 @chvRemark,  -- 其它信息 注释.
 @intUserID3,    -- 用户ID
 0, -- 相关的用户ID
 @intWantedAmount3,   -- 希望更新的数量(>0 加金, <0 扣金)
 0,    -- 税金(税金>0,要在现金中扣除,游戏服务器可以置为0)
 @chvIPAddress3,  -- IP地址
 0, -- 机器码
 1    -- 是否做Log,如果>0,则表示做Log,否则不做Log
exec [prMoney_UpdateCash]
 @chvModeName,   -- 通过什么方式,如'WEB'、'GameServer'等
 @chvSourceName,  -- 方式的源,如'金币麻将服务器'、'虚拟股市'等
 @chvRemark,  -- 其它信息 注释.
 @intUserID4,    -- 用户ID
 0, -- 相关的用户ID
 @intWantedAmount4,   -- 希望更新的数量(>0 加金, <0 扣金)
 0,    -- 税金(税金>0,要在现金中扣除,游戏服务器可以置为0)
 @chvIPAddress4,  -- IP地址
 0, -- 机器码
 1    -- 是否做Log,如果>0,则表示做Log,否则不做Log
commit tran
return 1

GO
SET QUOTED_IDENTIFIER OFF
GO
SET AN

时间: 2024-08-02 22:55:43

一个四用户信息同步更新的存储过程的相关文章

php中对用户信息进行更新执行mysql语句时update无法正确更新

问题描述 php中对用户信息进行更新执行mysql语句时update无法正确更新 这是代码 这个更新语句不知道有没有什么问题 第一个是打印出update的执行结果 是true 证明sql语句能运行,但是不知道是否能达到目的 数据库中的结果,没有更新成功,但是用户名变为了0,密码没有更变成功 请阁下帮忙分析指点一下 解决方案 update语字的格式里,多个字段更新是用逗号分隔,不是用AND进行连接. "update userinfo set username='$newusername', pas

一个获取用户信息的类(仿动网论坛做法)

动网论坛 <script language="vbscript" runat="server">'******************************'名称:用户属性显示类'日期:2005/12/3'描述:无'版权:转载请注名出处,作者'''****************************** 'On Error Resume NextClass UserInfo '------------------------------------

基于jsp+servlet图书管理系统之后台用户信息插入操作

前奏: 刚开始接触博客园写博客,就是写写平时学的基础知识,慢慢发现大神写的博客思路很清晰,知识很丰富,非常又价值,反思自己写的,顿时感觉非常low,有相当长一段时间没有分享自己的知识.于是静下心来钻研知识,趁着这学期的结束(马上就要放寒假了),写写最近练习的基于jsp+servlet+前台模板写的图书管理系统,一点一点写吧,详细的注释已经在代码上说明,希望对学习基于java开发的web方向的童鞋有所帮助.今天先把写的用户信息管理的添加(插入)操作分享一下,使用了一些特殊的知识,也会做一下说明.更

后台-第三方授权登录就是获取从第三方获取到用户信息,然后再注册一个账户?

问题描述 第三方授权登录就是获取从第三方获取到用户信息,然后再注册一个账户? 第三方授权登录就是获取从第三方获取到用户信息,然后再注册一个账户? 比如微信授权 知乎,就是获取用户在微信注册的信息,然后用这些信息在知乎上自动注册一个新用户? 是这个原理吗?这样整个授权过程就没后台什么事了,对吧? 解决方案 没有问题......... 解决方案二: 应该是....... 解决方案三: 一.完全的第三方授权登录是本系统不需要账号的,就用第三方提供的账号. 二.在本系统已经有账号管理的前提下,再附加第三

请教一个国家级系统中用户信息表应该包含字段

问题描述 最近一个国家级的项目,在设计后台的时候,发现用户信息表中有些常用信息不够,不知道那位大侠有过这方面的经验,请赐教!!谢谢 解决方案 解决方案二:不要停下去啊,解决方案三:国家级别....膜拜企业级别的漂过....解决方案四:引用楼主wazheng的回复: 最近一个国家级的项目,在设计后台的时候,发现用户信息表中有些常用信息不够,不知道那位大侠有过这方面的经验,请赐教!!谢谢 不太清楚你这个国家级的是指什么有更具体的么?解决方案五:国家级是神马?>解决方案六:神马是国家级啊,我现在做的是

青鸟小弟,请问用AJAX技术做的聊天室,一个页面发送 信息(Message),而另一个页面无法达到及时更新数据,当另一个页面发送数据的时候,才能更新数据!急求?

问题描述 青鸟小弟,请问用AJAX技术做的聊天室,一个页面发送信息(Message),而另一个页面无法达到及时更新数据,当另一个页面发送数据的时候,才能更新数据!急求解决问题的方案用到的技术JSP,Struts2,Hibernate,Spring,用到的内置对象:application:这个关键--是存放发送的信息的,Session:这个主要是区别不同登录用户???请问如何达到要求,一个页面发送信息,另一个页面也更新数据,大前提:不要刷新页面,我用的就是AJAX技术,我急求高手指点一下菜鸟小弟,

小米台湾承认私自上传用户信息 称已更新系统

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 凤凰科技讯 8月11日消息,近日有台湾媒体称小米手机未经用户同意上传用户数据.小米承认私自上传用户信息,但称已经解决了该问题. 8月10日小米在香港Facebook主页发表声明,称发布了OTA升级包,关闭"网路简讯(大陆称为网络短信)"自动启动功能,升级后,所有新用户或将手机恢复出厂设置的旧用户,如希望开启"网路

SharePoint 2013 数据库中手动更新用户信息

在SharePoint的使用过程中,尤其是Windows认证的情况下,而且没有配置用户配置文件服务,经常会出现如果更新AD中的用户信息(包括名字.显示名.邮件等),SharePoint这边站点并不会更新的情况. 这时候,我们经常会操作数据进行更新操作,生产环境建议备份,测试环境也要多看几次update语句. 1.首先进入授权的用户组,看到我们的用户名,当AD中更新,这里的Name还是之前的名字,如下: 2.鼠标放到名字上,可以看到Url链接地址,这时候我们需要ListId和ID,ListId是用

jsp-oracle+JSP 做一个网站,显示并可以修改用户信息

问题描述 oracle+JSP 做一个网站,显示并可以修改用户信息 新手救助.登陆之后可以判断是用户还是管理员,显示相应的信息:用户可以修改除了名字以外的信息.每一步是要怎么做? 解决方案 需求分析一下,别拿到项目就开始怎么做,要明白要做些什么.常用的先设计数据库的表,加入一个标识字段,登录的时候判断是管理员还是用户,将状态信息保存到session中.