我有一个在 SQL Server 中运行存储过程的应用程序,检查表中一行与getdate()
我从 c# 调用这个存储过程,并使用 a@returnValue
来做一些事情
这是方法
public static bool Check(string CheckStored)
{
using (DbCommand command = DatabaseDA.DefaultDb.GetStoredProcCommand(CheckStored))
{
DatabaseDA.DefaultDb.AddParameter(command, "ReturnValue", DbType.Boolean, ParameterDirection.ReturnValue, "", DataRowVersion.Current, 0);
DatabaseDA.DefaultDb.ExecuteNonQuery(command);
return Convert.ToBoolean(command.Parameters["@ReturnValue"].Value);
}
}
这就是电话
bool notifNeeded = NotificationsDA.Check("CheckLastEnvioListadoComprobanteEjercicio");
然后在 SQL Server 中我有:
ALTER Procedure [dbo].[CheckLastEnvioListadoComprobanteEjercicio]
as
Begin
declare @UltimoEnvio datetime
declare @ReturnValue bit
select @UltimoEnvio = LastDate from EnvioListadoEjercicioComprobantes
Select @returnValue = CASE
WHEN DATEDIFF(hour, @UltimoEnvio, getdate()) >= 1 THEN 1
ELSE 0
END
from rep_inboxRequest
if (@ReturnValue = 1)
update EnvioListadoEjercicioComprobantes set LastDate = getdate()
return @ReturnValue
END
在EnvioListadoEjercicioComprobantes
我有一个动作的 lastDate 行(ej 发送邮件)。
现在,我只有一排,2012-06-18 06:40:02.210
有价值。我将此日期与实际日期进行比较,如果差异超过一个小时,则返回一点。
现在,在阿根廷,它大约2012-06-18 11:26
如果我getdate()
在 SQL Server 中执行,我会得到2012-06-18 11:30:44.027
如果我在 SQL Server 中运行我的整个存储过程并 print @ReturnValue
,我得到 1 并且该行被更新-
但是当我从 C# 调用我的存储时,我总是得到 0,当然,该行没有更新。
我究竟做错了什么 ?