u014396717
5herhom
采纳率25%
2019-06-10 19:50

MS_SQL的存储过程中,如何判断update语句执行成功 ?

20

我需要写一个存储过程,根据前面的更新语句是否成功,决定后面的语句是否执行。看了很久旧帖子说要用@@ROWCOUNT判断,但是经过我的测试,发现这种判断并不支持并发的场景,很容易因为其他sql语句的执行导致判断结果发生变化。
跪求大佬们提供支持高并发的判断方法!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答

  • u014396717 5herhom 2年前

    图片说明
    如图,叫做“妮瑪”的网友的写法给了我一丝希望。但是,如图中测试之后,return的内容输出的是0呀。请问是我哪里写的不对吗

    我个人研究了很久,发现@@ROWCOUNT的判断方式其实是支持事务的。因为mssql的是以连接为单位维护@@ROWCOUNT的,类似于Web的后台,每个用户的进程都对应同一个Session。而每个连接中的执行语句都是存在串行的事务机制的。一个Web线程对应一个Sql连接,不存在所谓并发的情况。所以,可以直接用@@ROWCOUNT

    点赞 评论 复制链接分享
  • kyo1snk 妮瑪 2年前

    DECLARE @sql_str nvarchar(100), @return int
    SET @sql_str = 'update TEST set Field1 =2 where Field2 = 3';
    EXEC @return = sp_executesql @sql_str;
    PRINT @return;

    点赞 评论 复制链接分享
  • dashicaineng 蔡能教授,网站特聘专家 2年前