我有以下SQL语句
BEGIN
DECLARE @UpdateCount int
EXEC (@UpdateSQL)
SET @UpdateCount = @@RowCount
IF (@UpdateCount < 1)
BEGIN
EXEC (@InsertSQL)
END
END
SET NOCOUNT ON;它存在于触发器中,但是它并没有像我预期的那样工作,它会更新,但不会插入,我不知道我错过了什么。
@InsertSQL中的SQL也很好用,我已经测试过了。
发布于 2015-02-23 22:56:17
根据文档,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版本中重现您的问题,所以您的问题一定还有更多的原因。
https://stackoverflow.com/questions/28676334
复制相似问题