簡體   English   中英

將空值添加到SQL SERVER中的DATE字段

[英]Adding Null Value To DATE Field In SQL SERVER

我有一個表,該表的字段是日期。 它允許空值。 我正在嘗試使用存儲過程向該字段添加值,但是當我傳遞null時,我得到了

“存儲過程需要@ReadyDate的值。”

這是存儲過程:

Create PROCEDURE [dbo].[sp_UpdateStatus]
@id int,
@status varchar(20),
@ReadyDate Date
AS
BEGIN
    UPDATE PMF_ToolingRequests
        SET status = @status,
        ReadyDate = @ReadyDate
    WHERE ID = @id
END

這是我用來更新字段的C#代碼。 當我也發送一個空字符串時,它會感到沮喪:

if (setReadyTime)
{
    cmd.Parameters.Add("@ReadyDate", SqlDbType.Date).Value = DateTime.Today.ToString("yyyy/MM/dd");
}
else
{
    cmd.Parameters.Add("@ReadyDate", SqlDbType.Date).Value = (DateTime?)null;
}

cmd.Parameters.Add("@id", SqlDbType.Int).Value = id;
cmd.Parameters.Add("@status", SqlDbType.VarChar).Value = status;

我也嘗試過:

cmd.Parameters.Add("@ReadyDate", SqlDbType.Date).Value = null;

在某些時候,該字段沒有任何價值。 我想在條件滿足時填寫它。

cmd.Parameters.Add("@ReadyDate", SqlDbType.Date).Value = DBNull.Value;

在本質上, null在面向對象的語言具有比略有不同的含義NULL在你的數據庫,這是為什么

cmd.Parameters.Add("@ReadyDate", SqlDbType.Date).Value = null;

不起作用。

如果您想閱讀一下, 是一篇有關DBNull的MSDN文章。

嘗試這個:

傳遞ReadyDate ,默認值為null

Create PROCEDURE [dbo].[sp_UpdateStatus]
@id int,
@status varchar(20),
@ReadyDate Date=null
AS
BEGIN
    UPDATE PMF_ToolingRequests
        SET status = @status,
        ReadyDate = @ReadyDate
    WHERE ID = @id
END

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM