0
在@proc_name
表變量中,我有存儲過程名稱,並且我使用動態SQL傳遞參數。我正在使用while循環遍歷@proc_name
中的所有行。我可以在這裏使用CTE來提高性能嗎?通過CTE迭代和執行
SELECT *
FROM @proc_name
WHILE (@count <= @max)
BEGIN
SET @proc_exec = 'usp_Balance_'
+Replace((SELECT Description FROM @proc_name WHERE rn= @count),' ','')+' '+' '+''''
+Replace((SELECT TellerID FROM @proc_name WHERE rn= @count),' ','')+''''+' ,'+''''
[email protected]+''''+' , '+''''+cONvert(VARCHAR(100),@BusinessDate)+''''
-- Update TDrawerSummary
PRINT (@proc_exec)
SET @count = @count + 1
END
謝謝。
可能不能夠提高這麼多,但有點難以完全理解。你是否肯定需要'動態sql'來運行存儲過程遍歷每個recordin'@ proc_name'?存儲過程中實際發生了什麼? – sgeddes
CTE(在SQL Server中)不會提高性能。他們確實使查詢更容易理解,不過。 –
@GordonLinoff - 我已經讓他們提高了性能 - 從一個大表中選擇一小組字段,這些字段是唯一的,並且包含在cte的索引中,然後返回到表中以獲得其餘列。 – Hogan