簡體   English   中英

日期時間在存儲過程中返回null

[英]Datetime returning null in a stored procedure

我正在另一個存儲過程中執行一個存儲過程。

我傳遞參數,並且當值不為null時,它可以很好地工作,但是當值生成為0行時,它給我錯誤。

存儲過程:

    declare @LDate datetime
    declare @DateEntered datetime

    insert into Table1 values(5,5)

    EXEC @LDate = GetLDate @ID, @GID   // other stored procedure inside the main stored procedure
    // GetLDate is ("select Date1 from TableGetDate where @ID =4,@GID=5")

    if(CAST(@LDate as datetime) < CAST(@DateEntered as datetime))
        Select '-1'
    else
        SELECT '-2'

在C#代碼中,我調用ExecuteScalar ,如果@LDate返回日期,則返回null。 如果@LDate返回日期,則一切正常。

如何解決呢?

如果對象值為null,則可以安全地將返回對象轉換為日期時間。

DateTime dateTime = new DateTime();
try
{
 dateTime = Convert.ToDateTime(cmd.ExecuteScalar());
}
catch
{
 dateTime = new DateTime(1900, 1, 1);
}

您無需將日期時間強制轉換為日期時間。 那什么也沒做。

declare @LDate datetime
declare @DateEntered datetime

EXEC @LDate = GetLDate @ID,@GID //Other store proc inside the main store proc

if (@LDate is null)
   SELECT '0' 
else if( @LDate < @DateEntered )
    SELECT '-1'
else
    SELECT '-2'

暫無
暫無

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

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