在一个商业游戏服务器端里有下面这样一个存储过程,
CREATE PROCEDURE LOAD_USER_DATA
@id char(21)
ASDECLARE @nRet smallint
SET @nRet = 0SELECT @nRet = COUNT(strUserId) FROM USERDATA WHERE strUserId = @id
IF @nRet = 0
RETURN 0SELECT Nation, Race, Class, HairColor, Rank, Title, [Level], [Exp], Loyalty, Face, City FROM USERDATA WHERE strUserId = @idRETURN 1红色部分可不可以去掉呢?改成下面这样??CREATE PROCEDURE LOAD_USER_DATA
@id char(21)
ASSELECT Nation, Race, Class, HairColor, Rank, Title, [Level], [Exp], Loyalty, Face, City FROM USERDATA WHERE strUserId = @idif @@ROWCOUNT=0
RETURN 0
ELSE
RETURN 1
CREATE PROCEDURE LOAD_USER_DATA
@id char(21)
ASDECLARE @nRet smallint
SET @nRet = 0SELECT @nRet = COUNT(strUserId) FROM USERDATA WHERE strUserId = @id
IF @nRet = 0
RETURN 0SELECT Nation, Race, Class, HairColor, Rank, Title, [Level], [Exp], Loyalty, Face, City FROM USERDATA WHERE strUserId = @idRETURN 1红色部分可不可以去掉呢?改成下面这样??CREATE PROCEDURE LOAD_USER_DATA
@id char(21)
ASSELECT Nation, Race, Class, HairColor, Rank, Title, [Level], [Exp], Loyalty, Face, City FROM USERDATA WHERE strUserId = @idif @@ROWCOUNT=0
RETURN 0
ELSE
RETURN 1
SELECT @nRet = COUNT(strUserId) FROM USERDATA WHERE strUserId = @id
IF @nRet = 0
RETURN 0 -------------可以写成:
IF NOT EXISTS (SELECT 1 FROM USERDATA WHERE strUserId = @id )
return 0
IF NOT EXISTS (SELECT 1 FROM USERDATA WHERE strUserId = @id )
return 0
direct use select sql to fetch rows,and the client does the job.
SET @nRet = 0
这句到是多余的.