冗長に思えますが、プロシージャ内で一時的に作成されたテーブルの行をカウントしようとしています。
(注: テーブルが間違ってコーディングされている可能性が高いです)@rows
変数をカウントする必要があり、@StartDate
変数から 1 年間の正確な日数を出力する必要があります。(これにはうるう年も含まれます)。
作成されたテーブルは、変数の後のちょうど 1 年間、毎日のINSERT
日付にする必要があります。VALUES
@StartDate
この割り当てには TEMPORARY TABLE が必要です。申し訳ありませんが、それが先生の求めていることです。
参考までに:私は初心者です。助けていただければ幸いです:)
CREATE PROCEDURE usp_DateLookup
@StartDate DATE,
@Rows INT OUTPUT
AS
DECLARE @countIndex INT
DECLARE @yearDate DATE
DECLARE @todaysDate DATE
SET @yearDate = DATEADD(YEAR, 1,@StartDate)
SET @todaysDate = GETDATE()
BEGIN
CREATE TABLE #DateLookup
(
DateID INT IDENTITY (1,1),
DateDescription DATE
)
WHILE (SELECT DATEDIFF(DD,@StartDate, @yearDate) FROM #DateLookup) <= 366
BEGIN
SET @countIndex = @countIndex +1
INSERT #DateLookup (DateDescription)
VALUES (DAY(@todaysDate)+ @countIndex)
END
SET @Rows = (SELECT COUNT(DateDescription) FROM #DateLookup)
END
GO
DECLARE @StartDate DATE
DECLARE @Rows INT
SET @StartDate = '2012-05-06'
EXEC usp_DateLookup @StartDate, @Rows OUTPUT
PRINT CONVERT(NVARCHAR,@Rows)