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

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

3个回答

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

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

u014396717
5herhom 这是java语言的判断方式吧。我说得是存储过程的判断方式
大约一年之前 回复

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;

u014396717
5herhom 你好,感谢你的回答,但是你的答案我试了下,无论是否执行,return的输出都是0呀。由于评论不能发图片,我截了图在其中一层的回答里面。
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问