SQL Server:使用表数据调用存储过程

时间:2016-12-02 16:10:43

标签: sql-server tsql

我可能会很难对这个问题措辞,但我不能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)?

很抱歉,如果之前有人询问过这个问题,我已经看了一眼,无法找到答案,或者这个问题不够充实。

提前致谢

0 个答案:

没有答案