我有一个关于SQL Server的非常通用的问题。
我有一个SP,它输入@reportID参数并返回该报告的历史记录。由于我有大约3000个报告并需要处理每个报告的历史记录,因此我创建了一个临时表,其中插入了返回的数据,但没有报告ID是无用的。
OPEN cursor_reportStats
FETCH NEXT FROM cursor_reportStats INTO @ReportID
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO @temp
EXEC dbo.GetHistory @ReportID
FETCH NEXT FROM cursor_reportStats INTO @ReportID
END
所以我需要的是将@ReportID附加到GetHistory返回的每一行
非常感谢
答案 0 :(得分:1)
添加第二个@temptable
,其中包含ReportID
列+其余数据。您的@temp
表将是缓冲表,并将在每次迭代时删除。在每次迭代结束时,您将在第二个@ReportID
中插入当前@temptable
值和缓冲区表中的数据。
所以,你会有这样的事情:
OPEN cursor_reportStats
FETCH NEXT FROM cursor_reportStats INTO @ReportID
WHILE @@FETCH_STATUS = 0
BEGIN
DELETE FROM @temp;
INSERT INTO @temp
EXEC dbo.GetHistory @ReportID
INSERT INTO @temptable
SELECT @ReportID, *
FROM @temp
FETCH NEXT FROM cursor_reportStats INTO @ReportID
END