热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

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

代码如下:

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 ANSI_NULLS ON
GO

推荐阅读
  • Abp+MongoDb改造默认的审计日志存储位置
    一、背景在实际项目的开发当中,使用AbpZero自带的审计日志功能写入效率比较低。其次审计日志数据量中后期十分庞大,不适合与业务数据存放在一起。所以我们可以重新实现A ... [详细]
  • 概述H.323是由ITU制定的通信控制协议,用于在分组交换网中提供多媒体业务。呼叫控制是其中的重要组成部分,它可用来建立点到点的媒体会话和多点间媒体会议 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了iOS开发中检测和解决内存泄漏的方法,包括静态分析、使用instruments检查内存泄漏以及代码测试等。同时还介绍了最能挣钱的行业,包括互联网行业、娱乐行业、教育行业、智能行业和老年服务行业,并提供了选行业的技巧。 ... [详细]
  • POCOCLibraies属于功能广泛、轻量级别的开源框架库,它拥有媲美Boost库的功能以及较小的体积广泛应用在物联网平台、工业自动化等领域。POCOCLibrai ... [详细]
  • 当google在搜索上很成功,并购youtube、发布gmail、进入手机、一统地图的时候,我们说google真伟大。当苹果在mp3领域一骑绝尘,iphone秒杀诺基亚,ipad打倒了电子 ... [详细]
  • 我一直都有记录信息的习惯,不知是从什么时候开始,大约是在工作后不久。如今还真有点庆幸从那时开始记了点东西,当然是电子版的,写 ... [详细]
  • Apple iPad:过渡设备还是平板电脑?
    I’vebeenagonizingoverwhethertopostaniPadarticle.Applecertainlydon’tneedmorepublicityandthe ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • 在最近的一系列文章,对midipadAPP,有一个关于一个radialgradiant渲染每个padview利用的探讨,对审美的原因&#x ... [详细]
author-avatar
四年夏至_175
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有