(相關this post,但不一樣的。)如何將SqlParameter值設置爲SQL函數的結果?
有沒有辦法使用的SqlParameter指定的值應該在服務器調用一個函數來獲得?例如。
private void Test()
{
var cmd = new SqlCommand("update Table set ADateField = @p1 where Id = @id");
cmd.Parameters.AddWithValue("@id", 42);
cmd.Parameters.AddWithValue("@p1", "sysutcdatetime()"); // WRONG!!
cmd.ExecuteNonQuery();
}
我可以嵌入在CommandText字符串通話,但有時我想設置一個明確的值,而不是調用函數所以它變得有點凌亂。
我不想在客戶端計算機上獲取日期,因爲這可能與時區差異導致的服務器日期不同。
從docs我看不出如何完成,但我想我會在放棄之前與你們覈對。謝謝!
您是否嘗試過var cmd = new SqlCommand(「update Table set ADateField = sysutcdatetime()where Id = @id」);而不是發送@ p1作爲參數之一。 – Shailesh
@Shailesh:是的,這就是我上面「嵌入CommandText」的意思。這只是有點麻煩,它會導致顯式值和默認值(當前日期)的不同代碼路徑。 –