1
在SQL Server 2008 R2,在存儲過程中我有2個DECLARE
和遞歸CTE中的腳本:在SQL Server中轉換一個遞歸CTE的功能
DECLARE @MaxActivityDate DATETIME = (SELECT MAX(ActivityDate) FROM tbl)
DECLARE @MinActivityDate DATETIME = (SELECT MIN(ActivityDate) FROM tbl)
-- Generate all the dates between the minimum and the maximum
WITH DateRange (DateValue) AS
(
SELECT @MinActivityDate DateValue
UNION ALL
SELECT DateValue + 1
FROM DateRange
WHERE DateValue + 1 <= @MaxActivityDate
)
SELECT DateValue
FROM DateRange
[...]
我現在需要使用此代碼另一個存儲過程。我不想要任何代碼重複。我怎樣才能把它轉換成一個函數在兩個腳本中使用?
把這個變成一個功能時要小心 - 它是「隱藏」的事實,有一個在這個功能的數據庫訪問,並多次調用此代碼較大'SELECT'內(返回大量的行)可能會導致糟糕的表現。 –
我已經隱藏了一些代碼(爲了簡化問題),它調整了MIN,MAX數字,以便它們相距1年。 – Adam
https://www.mssqltips.com/sqlservertip/2800/sql-server-function-to-return-a-range-of-dates/ – JamieD77