ITPUB??ì3
12月微软Hyper-V虚拟化沙龙主题征集
ITPUB论坛 » MS SQL Server » 新手 有些地方的SQL看不懂

标题: [原创] 新手 有些地方的SQL看不懂
离线 polw



精华贴数 0
个人空间 0
技术积分 6 (133115)
社区积分 0 (1524661)
注册日期 2008-9-10
论坛徽章:0
      
      

发表于 2008-9-10 21:48 
新手 有些地方的SQL看不懂

这是一个游戏  新建人物的 存储过程     有好些地方不太了解  那位大虾能解释解释啊

例如:if( exists ( select * from cabal_badwoard where badword=@charname ) ) select convert(int,0x04) 他这0X04转换后的值干什么用啊  给谁用啊。。看不懂




CREATE  PROCEDURE [dbo].[cabal_sp_newchar] (@charname varchar(16), @characteridx  int, @style int, @stylemast int)
AS
begin
SET NOCOUNT ON
        if( exists ( select * from cabal_badwoard where badword=@charname ) ) select convert(int,0x04)       
        else if( exists ( select * from cabal_character_table where Name=@charname ) ) select convert(int,0x03)
        else if( exists ( select * from cabal_character_table where characteridx=@characteridx ) ) select convert(int,0x02)
        else if( @stylemast < 0x01 or @stylemast > 0x06 ) select convert(int,0x02)
        else
        begin
                -----------------------------------------------------------------------------------------------
                declare @RegTime dateTime, @userNum int, @serverIdx int, @result int
                set @userNum = @characterIdx/8
                set @serverIdx = dbo.getServerIdx()
                set @RegTime = getDate()
                set @result = convert(int, 0xA0) + @stylemast
                ------------------------------------------------------------------------------------------------

                select charTable.*, etcTable.equipmentData, etcTable.inventoryData, etcTable.skillData,
                           etcTable.quickSlotData, etcTable.questData, etcTable.questFlagsData
                into #tempTable
                from GAMESERVER.account.dbo.cabal_newCharData_table as charTable,
                         GAMESERVER.account.dbo.cabal_newEtcData_table as etcTable,
                        ( select top 1 charDataIdx, etcDataIdx from GAMESERVER.account.dbo.cabal_newFlagData_table
                          where channel = @serverIdx) as flagTable
                where flagTable.etcDataIdx = etcTable.dataIdx and flagTable.charDataIdx = charTable.dataIdx
                          and charTable.classType = etcTable.classType and charTable.classType = @stylemast
               
                IF( NOT EXISTS ( select * from #tempTable))
                BEGIN
                        select convert(int, 0x01)
                        drop table #tempTable
                        return
                END
                -----------------------------------------------------------------------------------------------               
                --
                EXEC GAMESERVER.account.dbo.cabal_sp_update_character_count @userNum, @serverIdx, 1
               
                --
                insert into cabal_character_table( CharacterIdx, Name, LEV, [EXP], [STR], DEX, [INT], PNT, Rank, Alz,
                        WorldIdx, [Position], Style, HP, MP, SP, SwdPNT, MagPNT, RankEXP, Flags, WarpBField, MapsBField, Reputation, Reserved1 )
                select  @characteridx, @charname, LEV, [EXP], [STR], [DEX], [INT], [PNT], Rank, Alz,
                                WorldIdx, Position, @style, HP, MP, SP, SwdPNT, MagPNT, RankEXP, Flags, WarpBField, MapsBField, Reputation, Reserved1
                from #TempTable
               
                begin tran
                insert into cabal_equipment_table (characterIdx, data)
                select @characteridx, equipmentData from #TempTable
                insert into cabal_inventory_table (characterIdx, data)
                select @characteridx, inventoryData from #TempTable
                insert into cabal_skilllist_table (characterIdx, data)
                select @characteridx, skillData from #TempTable
                insert into cabal_quickslot_table (characterIdx, data)
                select @characteridx, quickSlotData from #TempTable
                insert into cabal_questdata_table (characterIdx, data, flags)
                select @characteridx, questData, questFlagsData from #TempTable
                commit tran
                ----------------------------------------------------------------------------------------------

                --0xA1 ~ 0xA6
                drop table #tempTable
                select convert(int, @result)
                -----------------------------------------------------------------------------------------------       
        end

SET NOCOUNT OFF
end


只看该作者    顶部
离线 lucky7_2000
一般会员


精华贴数 0
个人空间 0
技术积分 673 (2888)
社区积分 5 (15681)
注册日期 2004-8-21
论坛徽章:2
2008北京奥运纪念徽章:摔跤ITPUB新首页上线纪念徽章    
      

发表于 2008-9-11 10:00 
select convert(int,0x04)

这句的意思是将16进制的04转换为10进制的整数.

具体有什么用的话,要写这个的人了..


__________________
msn:lucky7_2000@hotmail.com
某网络公司数据库管理员.
只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问