2012-02-07 63 views
0

我收到一個異常,指出「'UserReportsAdd'需要參數'@Date',它沒有提供。SQL-getDate()沒有被保存爲[Date]字段的值

這裏的存儲過程:

CREATE PROCEDURE [dbo].[UserReportsAdd] 
     @ID BIGINT OUTPUT, 
     @Date datetime, 
     @ReportingUser bigint, 
     @ReportedUserID bigint, 
     @Description nvarchar (2000) 
    AS 
    BEGIN 
    SET NOCOUNT ON; 

    BEGIN 
    INSERT INTO UserReports (
     ReportingUser, 
     ReportedUserID, 
     [Description], 
     [Date] 
    ) 
     VALUES (
     @ReportingUser, 
     @ReportedUserID, 
     @Description, 
     getDate() 
    ) 
    END 

爲什麼我會被得到的錯誤,當我在insert語句定義它@date不提供,給它GETDATE的值() ?

謝謝你的時間。

+0

你的程序是期待一個日期的默認值。如果沒有提供日期,它會在那一點上拋出一個錯誤。 要麼刪除@date參數,要麼提供一個默認值,如果您希望它是可選的。 – 2012-02-07 17:57:07

回答

0

調用您的存儲過程的代碼未通過參數@Date。你的SP內的代碼似乎沒問題。

e.g:

declare @id bigint 
declare @date datetime = getdate() -- this one is missing by the calling code 
declare @reportingUser bigint = 1 
declare @reportedUserId bigint = 1 
declare @description nvarchar(2000) = 'some description' 

exec [dbo].[UserReportsAdd] @id output, @date /* this is missing */, @reportingUser, @reportedUserId, @descripion 
3

它列爲一個參數。這就是所有的解釋者都在檢查 - 有一個必要的參數沒有價值。

您可以將它移出參數塊及以下聲明下來,或者給它在聲明​​