乙個四使用者資訊同步更新的儲存過程

2021-04-01 22:42:23 字數 4467 閱讀 1776

不實用,之所以寫,一為領導的要求,另外也熟悉下寫**,**多寫點也沒什麼壞處,並且寫了之後發現臨時表還挺容易用的,資料量小的時候,並顯不出臨時表速度不行的問題.

**如下:

set quoted_identifier on

goset 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

asset 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,@fte*** 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)

endif @intcashamount2+@intwantedamount2<0

begin

set @ftemp=-@intcashamount2/@intwantedamount2

insert into #temp1 values(@ftemp)

endif @intcashamount3+@intwantedamount3<0

begin

set @ftemp=-@intcashamount3/@intwantedamount3

insert into #temp1 values(@ftemp)

endif @intcashamount4+@intwantedamount4<0

begin

set @ftemp=-@intcashamount4/@intwantedamount4

insert into #temp1 values(@ftemp)

endset @ftemp=(select min(@ftemp) from #temp)

drop table #temp1

if @ftemp<@frate

begin

set @frate=@ftemp

set @bneedrecalc=1

endif @bneedrecalc=1

begin

set @intwantedamount1=@intwantedamount1*@frate

set @intwantedamount2=@intwantedamount2*@frate

set @intwantedamount3=@intwantedamount3*@frate

set @intwantedamount4=@intwantedamount4*@frate

endbegin 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

goset quoted_identifier off

goset ansi_nulls on

go

乙個四使用者資訊同步更新的儲存過程

不實用,之所以寫,一為領導的要求,另外也熟悉下寫 多寫點也沒什麼壞處,並且寫了之後發現臨時表還挺容易用的,資料量小的時候,並顯不出臨時表速度不行的問題 如下 set quoted identifier on goset ansi nulls on go name 遊戲中四人資料同時更新 design...

乙個儲存使用者資訊的類,支援單一登入

看到這裡很多問如何實現單點登入,本人根據自己的經驗,提供乙個實現單點登入的類。支援web和winfrom,測試成功。利用雜湊表,作為儲存登入使用者的佇列 private static hashtable m userlist private static timespan m tssub new t...

C 乙個儲存使用者資訊的類,支援單點登入

看到這裡很多問如何實現單點登入,本人根據自己的經驗,提供乙個實現單點登入的類。支援web和winfrom,測試成功。設定雜湊表初始化為同步封裝 為了執行緒安全 m userlist hashtable.synchronized new hashtable 設定了幾種方式 1 登入資訊在資料庫中驗證成...