我有一个插入声明:
insert into parentTbl
select firstId, secondId, thirdId, dateTm
from importTbl
where codeId = @codeIdParam
我需要可靠地找出插入是否插入任何东西。理想情况下,我想将@insertedCount
变量设置为插入的行数,即使它是0。
我目前正在使用:
set @insertedCount = @@ROWCOUNT
但这似乎只能获得最后插入的行数 - 问题是如果INSERT SELECT
语句没有插入任何内容,@@ROWCOUNT
不会返回0。
答案 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
来获取插入计数。