2010-07-13 81 views
3

插入有插入语句:我如何检查是否有任何与INSERT SELECT(T-SQL)

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

我需要可靠地发现如果插入插入任何东西。理想情况下,我想一个@insertedCount变量设置为插入的行数,即使是0

我目前正在使用:

set @insertedCount = @@ROWCOUNT 

但这只能似乎得到的插入的最后一个号码行 - 问题是如果INSERT SELECT语句没有插入任何东西@@ROWCOUNT不返回0.

+0

您的插入语句是否驻留在循环或游标中? – CoderHawk 2010-07-13 11:10:15

回答

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来获得你的插入计数。

+0

最终,我将INSERT SELECT语句的SELECT并将其设置为将COUNT(*)返回给一个变量 - 当然,这发生在INSERT SELECT之前,它现在包装在IF块中。 – 2010-07-13 12:20:34

相关问题