有另一種方式,我可以做下面的查詢我可以在沒有while循環的情況下編寫以下查詢並提高效率嗎?
SELECT @MinID = MIN(ID), @MaxID = MAX(ID)
FROM #stp
WHILE (@MinID <= @MaxID AND IsNull(@MaxID, 0) > 0)
BEGIN
SELECT @result_mstr_id = result_mstr_id
FROM #stp
WHERE ID = @MinID
EXECUTE @err = f_rslm_publish @result_mstr_id
UPDATE dbo.results
SET result_stat_cd = CASE result_stat_cd
WHEN 'IP' THEN 'C'
WHEN 'IS' THEN 'S'
ELSE result_stat_cd
END
WHERE result_mstr_id = @result_mstr_id
SELECT @MinID = @MinID + 1
END
其典型的循環由計數器被送入但我能重新寫這是一個查詢?
'f_rslm_publish'做什麼? –
你的示例代碼本來可以簡單得多。 'IF @@ error!= 0 GOTO ERROR'語句是無關緊要和分散注意力的。而'UPDATE'查詢似乎也不相關。如果您編輯問題的標題以表明您的方案的關鍵元素是您正在爲存儲在表格列中的多個值執行存儲過程,那將會很好。 –
抱歉肯尼 - 讓我這樣做 – Rob