我可能会很难对这个问题措辞,但我不能100%确定我需要提出的问题。
我正在尝试迭代表中的行,并使用行中的数据调用存储过程。
这是我已有的代码,问题是时间问题(1000行大约需要1分钟);
--Set up a temp table with all non email alerts
SELECT TOP(1000)
RowNum = ROW_NUMBER() OVER(ORDER BY AlertID),
a.*, i.ImgData
INTO
#temp
FROM
dbo.ALERTS a
JOIN
dbo.IMAGES i ON i.VehicleID = a.VehicleID
WHERE
a.EmailImageSent = 0 OR a.EmailSent = 0
DECLARE @MaxRownum INT
SET @MaxRownum = (SELECT MAX(RowNum) FROM #temp)
DECLARE @Iter INT
SET @Iter = (SELECT MIN(RowNum) FROM #temp)
DECLARE @ImgData VARBINARY(MAX)
WHILE @Iter <= @MaxRownum
BEGIN
SELECT @VehicleID = VehicleID, @ImgData = ImgData
FROM #temp
WHERE RowNum = @Iter
IF @ImgData IS NOT NULL
BEGIN
EXEC dbo.someProcedure @VehicleID, @ImgData
--SELECT 'Image data found for', @VehicleID, @ImgData
END
SET @Iter = @Iter + 1
END
DROP TABLE #temp
我是否可以在使用基于集合的语句作为输入时运行存储过程(dbo.someProcedure
)?
很抱歉,如果之前有人询问过这个问题,我已经看了一眼,无法找到答案,或者这个问题不够充实。
提前致谢