SQL Server でストアド プロシージャを実行し、テーブル内の 1 つの行と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
in EnvioListadoEjercicioComprobantes
1 つのアクション (ej メール送信) の lastDate の行があります。
現在、2012-06-18 06:40:02.210
値のある行は 1 行しかありません。この日付を実際の日付と比較し、差が 1 時間以上ある場合はビットを返します。
現在、アルゼンチンでは、2012-06-18 11:26
getdate()
SQL Server で実行すると、2012-06-18 11:30:44.027
SQL Server でストアド プロシージャ全体を実行して print@ReturnValue
すると、1 が返され、行が更新されます。
しかし、C# からストアドを呼び出すと、常に 0 が返され、もちろん、行は更新されませんでした。
私は何を間違っていますか?