如何使用INSERT SELECT(T-SQL)检查是否插入了任何内容

时间:2010-07-13 10:50:18

标签: tsql select insert rowcount

我有一个插入声明:

insert into parentTbl
select firstId, secondId, thirdId, dateTm
from importTbl
where codeId = @codeIdParam

我需要可靠地找出插入是否插入任何东西。理想情况下,我想将@insertedCount变量设置为插入的行数,即使它是0。

我目前正在使用:

set @insertedCount = @@ROWCOUNT

但这似乎只能获得最后插入的行数 - 问题是如果INSERT SELECT语句没有插入任何内容,@@ROWCOUNT不会返回0。

1 个答案:

答案 0 :(得分:2)

您可以尝试使用OUTPUT子句,每个插入行会返回一行;类似的东西:

insert into parentTbl
output inserted.firstId
select firstId, secondId, thirdId, dateTm
from importTbl
where codeId = @codeIdParam

这将为您提供一个结果集,其中包含每个插入行的firstId个,然后您可以对其进行计数。
一种方法是output into一个table-var,然后在最后做一个select count(*) from @tableVar来获取插入计数。