• 656阅读
  • 14回复

[求助]请高手进来解决SQL语句部分问题---好象一直是出错的 [复制链接]

上一主题 下一主题
离线bnb
 
发帖
88
祝福宝石
0
威望
0
玛雅之石
0
创造宝石
0
只看楼主 倒序阅读 使用道具 楼主  发表于: 2006-06-04
我想在角色到达400级后,通过小退的方法来实现"转生送点"的简单功能.
  下面是我写的SQL触发代码:
-----------------------------
  CREATE TRIGGER [转生] ON [dbo].[Character]
  after update
  AS
  declare @level int
  declare @levelpoint int
  select @level = clevel from inserted
  select @levelpoint = LevelUpPoint from inserted
  if update(clevel)
    begin
    if (@level >399 )
        begin
          update [Character] set [Character] . clevel=50
              From inserted
                where [Character].accountid=inserted.accountid
                  and [Character].name=inserted.name
          ----实现角色级别返回50级,以便能进入适当地图
          update [Character] set [Character] . experience=0
              From inserted
                where [Character].accountid=inserted.accountid
                  and [Character].name=inserted.name
          -----经验返零(这样相当于前50级是没有升级点来加的)
 
          update [Character] set [Character] . LevelUpPoint=@levelpoint+300
              From inserted
                where [Character].accountid=inserted.accountid
                  and [Character].name=inserted.name
          -----相当于转生后返回300点的属性点
        end
  end
  ---------------------------

这样的代码在检测时是没有错误的,可以运用于Character表,但是问题是这样出现的:
  当角色到达400级后,退出游戏(正常),到数据库中查看数据(需要实现的数据都已经按照我的意愿实现了),但是当再次进入游戏时,已经不能进入游戏,,,,然后
  1.查看GS日志,出现"数据库设置失败"
    2.查看DATA1日志,发现"......无效的游标"

出现这样的情况我不知道是不是问题在---数据库与数据服务的通讯问题.
    ---- 我希望有能力的朋友能帮我分析一下问题所在,如果有可能的话,希望能帮我完善一下通过我这样的方法实现简单的"转生送点"的功能.
[ 此贴被bnb在2006-06-04 16:36重新 ]
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
离线bnb
发帖
88
祝福宝石
0
威望
0
玛雅之石
0
创造宝石
0
只看该作者 沙发  发表于: 2006-06-04
我诚心希望有经验人士来帮忙,自己先在这里顶一下.
离线bnb
发帖
88
祝福宝石
0
威望
0
玛雅之石
0
创造宝石
0
只看该作者 板凳  发表于: 2006-06-05
自己顶自己
离线wendy01
发帖
2638
祝福宝石
0
威望
0
玛雅之石
0
创造宝石
0
只看该作者 地板  发表于: 2006-06-05
电子科技大学
离线bnb
发帖
88
祝福宝石
0
威望
0
玛雅之石
0
创造宝石
0
只看该作者 4楼 发表于: 2006-06-05
引用第3楼wendy012006-06-05 00:55发表的“”:
[表情] 电子科技大学 [表情]

  你怎么知道我是杭州电子科技大学的?????
    难道是扫描我的端口???
离线wendy01
发帖
2638
祝福宝石
0
威望
0
玛雅之石
0
创造宝石
0
只看该作者 5楼 发表于: 2006-06-05
引用第4楼bnb2006-06-05 01:05发表的“”:
  你怎么知道我是杭州电子科技大学的?????
    难道是扫描我的端口???

离线iiibbbmmm
发帖
6808
祝福宝石
0
威望
13834
玛雅之石
0
创造宝石
0
只看该作者 6楼 发表于: 2006-06-05
set nocount on
以下内容需要回复之后才能查看
----------------------------------------------
离线bnb
发帖
88
祝福宝石
0
威望
0
玛雅之石
0
创造宝石
0
只看该作者 7楼 发表于: 2006-06-05
引用第6楼iiibbbmmm2006-06-05 11:40发表的“”:
set nocount on


SET NOCOUNT

使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息。

当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。当 SET NOCOUNT 为 OFF 时,返回计数。


即使当 SET NOCOUNT 为 ON 时,也更新 @@ROWCOUNT 函数。

当 SET NOCOUNT 为 ON 时,将不给客户端发送存储过程中的每个语句的 DONE_IN_PROC 信息。当使用 Microsoft® SQL Server™ 提供的实用工具执行查询时,在 Transact-SQL 语句(如 SELECT、INSERT、UPDATE 和 DELETE)结束时将不会在查询结果中显示"nn rows affected"。

 
  你这里设置了set nocount on ,其结果就是不返回计数(表示受 Transact-SQL 语句影响的行数)。  
    我虚心的问一下(我现在还没有测试):
          1, 在我写的那个触发器中,多了set nocount on 就能全部正常了吗?
          2, 就这个set nocount on ,在查询器中,作用是不很明显,只是提供查询性能,在set nocount on 在触发器中,是不是很多场合都要用set nocount on ????
        希望能给予一般性的解答,我虽然在这里还没有做过测试,但还是非常感激大哥已经给予我的答复-----set nocount on
离线bnb
发帖
88
祝福宝石
0
威望
0
玛雅之石
0
创造宝石
0
只看该作者 8楼 发表于: 2006-06-05
希望IBM大哥能再次帮助我
离线一半情人
发帖
332
祝福宝石
0
威望
0
玛雅之石
0
创造宝石
0
只看该作者 9楼 发表于: 2006-06-05
一半情人软件工作室:http://ljsheng.qyun.net 联系Q-9021616 ~出售游戏服务器和传奇版本-大量太阳级QQ

离线bnb
发帖
88
祝福宝石
0
威望
0
玛雅之石
0
创造宝石
0
只看该作者 10楼 发表于: 2006-06-05
还是要靠自己顶   顶到有人回答!!!!!!!!!!!!~~~~~~~~~~~~
离线wokaobb2
发帖
1
祝福宝石
0
威望
0
玛雅之石
0
创造宝石
0
只看该作者 11楼 发表于: 2006-06-06
查MSDN嘛~~~真是的
离线wendy01
发帖
2638
祝福宝石
0
威望
0
玛雅之石
0
创造宝石
0
只看该作者 12楼 发表于: 2006-06-06
离线iiibbbmmm
发帖
6808
祝福宝石
0
威望
13834
玛雅之石
0
创造宝石
0
只看该作者 13楼 发表于: 2006-06-06
GS会接受从SQL返回的影响行数来继续事务的处理

当你加入触发器之后, 返回的结果就会比原来多了

GS在接收到自己不能辨认的结果时, 就会出错, 正如你上面提到的

所以在触发器里面加入set nocount on, 关闭触发器内部的结果返回, 保持原状, 这样GS就不会出错了

以下内容需要回复之后才能查看
----------------------------------------------
离线bnb
发帖
88
祝福宝石
0
威望
0
玛雅之石
0
创造宝石
0
只看该作者 14楼 发表于: 2006-06-06
引用第13楼iiibbbmmm2006-06-06 13:36发表的“”:
GS会接受从SQL返回的影响行数来继续事务的处理
当你加入触发器之后, 返回的结果就会比原来多了
GS在接收到自己不能辨认的结果时, 就会出错, 正如你上面提到的
.......


谢谢了 IBM大哥和所有帮助我的朋友. 以后有需要的话,你们有什么小的帮助的话,我也可以尽力帮助.
  --------谢谢了.
快速回复
限100 字节
批量上传需要先选择文件,再选择上传
 
上一个 下一个

      管理员联系信箱 [email protected] 所有内容均来之互联网,如侵犯您的隐私和权益,请和我们及时联系!