极度奇怪,为什么一个存储过程很多人都是正确执行,但有一台电脑就会执行2次
好像还是同时执行的。
存储过程如下,真实奇怪死了
- SQL code
ALTER PROC [dbo].[addUser]( @qqOpenID CHAR(32), @userName NVARCHAR(30), @qqImg VARCHAR(150), @rankType TINYINT, @sex TINYINT, @insertGuidKey CHAR(36), @wbName VARCHAR(50), @id INT OUT, @introduction NVARCHAR(500))AS SELECT @id=ID FROM Users WHERE qqOpenID=@qqOpenID IF(@@ROWCOUNT>0) BEGIN UPDATE Users SET guidKey=@insertGuidKey,wbName=@wbName WHERE ID=@id RETURN 65; END ELSE BEGIN INSERT Users(qqOpenID,userName,qqImg,rankType,sex,guidKey,wbName,typeid,introduction) VALUES(@qqOpenID,@userName,@qqImg,@rankType,@sex,@insertGuidKey,@wbName,1,@introduction) Select @id=SCOPE_IDENTITY() RETURN 66; END
[解决办法]
那可能要检查一下那台执行两次的机器,是否有什么不同。你可以试试用那台电脑来跟踪究竟它是怎么执行存储过程,就是SSMS那个执行旁边的小绿箭头。看看过程。或者用VS写个代码来调用跟踪,vs很久没用,不会写。
另外,哪怕数据只有1条,也有可能受别的事务影响而导致查不出来。