请看一下这个简单的SQL 语句..

panxiaosen 2008-03-12 05:46:15
在一个商业游戏服务器端里有下面这样一个存储过程,
CREATE PROCEDURE LOAD_USER_DATA
@id char(21)
AS

DECLARE @nRet smallint
SET @nRet = 0

SELECT @nRet = COUNT(strUserId) FROM USERDATA WHERE strUserId = @id
IF @nRet = 0
RETURN 0


SELECT Nation, Race, Class, HairColor, Rank, Title, [Level], [Exp], Loyalty, Face, City FROM USERDATA WHERE strUserId = @id

RETURN 1

红色部分可不可以去掉呢?改成下面这样??

CREATE PROCEDURE LOAD_USER_DATA
@id char(21)
AS

SELECT Nation, Race, Class, HairColor, Rank, Title, [Level], [Exp], Loyalty, Face, City FROM USERDATA WHERE strUserId = @id

if @@ROWCOUNT=0
RETURN 0
ELSE
RETURN 1
...全文
102 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawugui 2008-03-12
  • 打赏
  • 举报
回复
你那句是干嘛的没看明白.

不过之前的
SET @nRet = 0
这句到是多余的.
zheninchangjiang 2008-03-12
  • 打赏
  • 举报
回复
you should not use procedure,your server will do at least one select sql.
direct use select sql to fetch rows,and the client does the job.
ssc16864 2008-03-12
  • 打赏
  • 举报
回复
可以的。
zzr82528 2008-03-12
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 panxiaosen 的回复:]
如果按我那样的改的,两句SELECT变成一句,是不是会省点资源? 但是商业的游戏那样写应该也有他的道理吧?
[/Quote]
在查不到的时候,改之后更浪费资源。
可以测试一下。
本来为空,查不到,却要查一遍。
从功能上说没什么问题,如果要效率,最好实际测试一下。
pt1314917 2008-03-12
  • 打赏
  • 举报
回复

IF NOT EXISTS (SELECT 1 FROM USERDATA WHERE strUserId = @id )
return 0
ma_yan_jun_78 2008-03-12
  • 打赏
  • 举报
回复
子木 :按你改的就没有判断了.
无枪狙击手 方法及分析都很正确
panxiaosen 2008-03-12
  • 打赏
  • 举报
回复
如果按我那样的改的,两句SELECT变成一句,是不是会省点资源? 但是商业的游戏那样写应该也有他的道理吧?
panxiaosen 2008-03-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 happyflystone 的回复:]
效率低,而且浪费服务器资源
[/Quote]

是说原来的代码比较浪费资源吗?
dobear_0922 2008-03-12
  • 打赏
  • 举报
回复
可以,,,
-狙击手- 2008-03-12
  • 打赏
  • 举报
回复
效率低,而且浪费服务器资源
-狙击手- 2008-03-12
  • 打赏
  • 举报
回复
商业游戏服务器端考虑效率
-狙击手- 2008-03-12
  • 打赏
  • 举报
回复

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
青锋-SS 2008-03-12
  • 打赏
  • 举报
回复
应该可以

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧