0

I am executing a stored procedure inside another stored procedure.

I pass the parameters and when the value is not null, it works perfectly fine, but when the value generates as 0 rows, it gives me error.

Stored procedure:

    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'

When in the C# code I call ExecuteScalar, it returns null if @LDate returns no date. If @LDate returns a date then everything works perfectly fine.

How to solve this?

Cœur
  • 37,241
  • 25
  • 195
  • 267
hello temp11
  • 141
  • 4
  • 17

2 Answers2

0

You could safely convert the return object to a datetime if the object value is null.

DateTime dateTime = new DateTime();
try
{
 dateTime = Convert.ToDateTime(cmd.ExecuteScalar());
}
catch
{
 dateTime = new DateTime(1900, 1, 1);
}
Mike
  • 550
  • 2
  • 16
0

You don't need to cast a datetime as a datetime. That doesn't do anything.

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'