我在T-SQL中有以下内容:
INSERT INTO tblAttMain(Site, FirstName, LastName)
SELECT
Site, FirstName, LastName
FROM
tblAttTmp
WHERE
Site = @Site
我在这里做的是将tblAttTmp
中的列复制到tblAttMain
表中。请注意,select语句可以返回数百行。 tblAttTmp
有一个名为ID的主键,用于指定该记录的特定ID。
如果对于select的每次交互,如果有错误,我想吐出tblAttTmp
的ID是什么并创建一个字符串,以便我可以看到所有需要的ID固定。
不知道如何做,因为选择是一次性交易。
答案 0 :(得分:4)
正如您所说,select
和insert
是“一枪”。你有两个真正的选择:
(你真的真的需要使用第二个选项)。
答案 1 :(得分:0)
听起来您宁愿将此解决方案实现为cursor。使用光标,您可以每次插入一个而不是一堆,并在每次迭代期间执行操作。
DECLARE @Cursor CURSOR FOR
SELECT Site, FirstName, LastName FROM tblAttTmp WHERE Site = @Site
DECLARE @CurrentSite <DataType>
DECLARE @CurrentFirstName <DataType>
DECLARE @CurrentLastName <DataType>
OPEN @Cursor
FETCH NEXT FROM @Cursor INTO @CurrentSite, @CurrentFirstName, @CurrentLastName
WHILE @@FETCH_STATUS = 0
BEGIN
-- INSERT using @CurrentSite, @CurrentFirstName, @CurrentLastName
-- Use a Try/ Catch block to catch errors
FETCH NEXT FROM @Cursor INTO @CurrentSite, @CurrentFirstName, @CurrentLastName
END
CLOSE @Cursor
DEALLOCATE @Cursor