【发布时间】:2012-05-02 11:43:16
【问题描述】:
(与this post相关,但不一样。)
有没有办法使用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:是的,这就是我上面所说的“嵌入 CommandText”的意思。它只是有点混乱,因为它导致显式值和默认值(当前日期)的不同代码路径。