为了账号安全,请及时绑定邮箱和手机立即绑定

数据库问题急急急急急急急

数据库问题急急急急急急急

qq_遁去的一_1 2018-12-07 04:49:33
Declare @TalentId nvarchar(10),    @JobTalentPoolId nvarchar(20)  SET NOCOUNT ON;  begin tran  Declare JobCollentTalentId Cursor  for  select TalentId,JobTalentPool.TalentPoolId from JobTalentPool where CreatorId=@FromUserId  open JobCollentTalentId  fetch  next from JobCollentTalentId into @TalentId,@JobTalentPoolId  while @@FETCH_STATUS=0  begin    if(not exists(select * from JobTalentPool where CreatorId=@ToUserId and TalentId=@TalentId))    begin     update JobTalentPool set CreatorId=@ToUserId where JobTalentPool.TalentPoolId=@JobTalentPoolId    end   end  update Jobs set UserId=@ToUserId where UserId=@FromUserId   delete  from CompanyUsers where CompanyId=@CompanyId and PositionId in (select PositionId From Positions where UserId=@FromUserId)  if(@@ERROR>0)  begin   RAISERROR(50001, 16, 1, '删除出错,请重试!')   rollBack    return -1  end  commit tran  return 0 这个存储过程一直执行,保服务器超时错误,到底什么原因望指教..
查看完整描述

3 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

在SQL中用游标?太影响性能了,如果数据量小还可以,如果数据量大最好不要用,影响SQL性能的其中就有游标。劝你可以在程序中搞定

查看完整回答
反对 回复 2019-01-07
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

SQL中尽量少使用游标,因为对性能影响比较大,楼主这个是个死循环,在while中没有添加break跳出,所以一直会不断的执行知道超时,另外SQL中可以设置超时时间,可以根据自己的数据量进行设置

查看完整回答
反对 回复 2019-01-07
  • 3 回答
  • 0 关注
  • 511 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信