我有以下SQL
BEGIN
DECLARE @UpdateCount int
EXEC (@UpdateSQL)
SET @UpdateCount = @@RowCount
IF (@UpdateCount < 1)
BEGIN
EXEC (@InsertSQL)
END
END
SET NOCOUNT ON;
它存在于一个触发器中,但是它没有像我期望的那样工作,它更新但是没有插入,我不知道我错过了什么..
@InsertSQL里面的SQL也很好,我已经测试了这个。
答案 0 :(得分:0)
根据文档,EXECUTE语句不会影响@@ ROWCOUNT:
https://technet.microsoft.com/en-us/library/ms187316(v=sql.110).aspx
一个选项是使用sp_executesql和输出参数:
DECLARE @UpdateCount int
SET @UpdateSQL = @UpdateSQL + '; select @UpdateCount = @@rowcount'
exec sp_executesql @UpdateSQL, N'@UpdateCount int output', @UpdateCount = @UpdateCount output
我说实话,我已经无法在任何版本的SQL Server中重现您的问题,因此您的问题必须更多。