5
,如果我有一個函數SQL是否重新evalulate功能的每一行或只有一次,將其轉換爲一個常數
ALTER FUNCTION [dbo].[GetCycleDate]
(
)
RETURNS DATE
AS
BEGIN
DECLARE @CYC_DT DATE
SELECT
@CYC_DT = CYC_DT
FROM
CYC_DT
WHERE
CURR_CYC_IND = 'C'
RETURN @CYC_DT
END
對於一個非常大的表,將在這兩個SQLS執行幾乎一樣的嗎?
SELECT
*
FROM
[dbo].Table S
INNER JOIN dbo.CYC_DT D ON
S.GL_DT = D.CYC_DT AND
D.CURR_CYC_IND = 'C'
SELECT
*
FROM
[dbo].Table S
WHERE
S.GL_DT = dbo.GetCycleDate()
我知道避免了功能更安全,但是出於測試目的,我希望能夠給鑽機的功能,而不會影響誰是依靠不同的日期其他人所做的測試返回一個硬編碼的結果在循環日期表中設置。我希望能夠在不影響其他人的情況下切換到不同的日期。