3

我有一个插入语句:

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

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

我目前正在使用:

set @insertedCount = @@ROWCOUNT

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

4

1 回答 1

2

您可以尝试使用一个OUTPUT子句,该子句将每插入一行返回一行;就像是:

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

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

于 2010-07-13T11:15:33.090 回答