いいえ、オーバーロードされたストアドプロシージャを作成することはできません。一方が他方をオーバーライドします。オーバーロード機能は可能ですが。したがって、内部ストアドプロシージャを別の名前に変更するか、その逆に変更します(つまり、外部ストアドプロシージャ)。これがあなたの状況をシミュレートする例です。
-外部ストアドプロシージャ
USE [Test]
GO
-- exec [dbo].[USP_GetHomeData] 2012
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[USP_GetHomeData]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[USP_GetHomeData]
GO
CREATE PROCEDURE [dbo].[USP_GetHomeData]
-- Add the parameters for the stored procedure here
(
@Year INT
)
AS
BEGIN
DECLARE @startDate DATETIME='1/1/' + CAST(@Year AS VARCHAR(4)) -- mm/dd/yyyy
DECLARE @endDate DATETIME=GETDATE() -- mm/dd/yyyy
SELECT [Date] = DATEADD(Day,Number,@startDate)
FROM master..spt_values WITH(NOLOCK)
WHERE Type='P'
AND DATEADD(day,Number,@startDate) <= @endDate
exec [dbo].[USP_GetHomeData_Inner] '1/1/1900', @endDate
END
-内部ストアドプロシージャ
USE [Test]
GO
-- exec [dbo].[USP_GetHomeData_Inner] '1/1/1900', '11/25/2012'
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[USP_GetHomeData_Inner]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[USP_GetHomeData_Inner]
GO
CREATE PROCEDURE [dbo].[USP_GetHomeData_Inner]
-- Add the parameters for the stored procedure here
(
@startDate DATETIME
,@endDate DATETIME
)
AS
BEGIN
;WITH Calender AS
(
SELECT @startDate AS CalanderDate
UNION ALL
SELECT CalanderDate + 1 FROM Calender
WHERE CalanderDate + 1 <= @endDate
)
SELECT [Date] = CONVERT(VARCHAR(10),CalanderDate,25)
FROM Calender WITH(NOLOCK)
OPTION (MAXRECURSION 0)
END
結果(部分的)は以下の通りです
お役に立てれば。