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