将ASP.NET中的DateTime插入到存储过程中

时间:2011-03-27 17:04:18

标签: c# sql-server tsql datetime stored-procedures

我正在尝试将asp.net应用程序中的日期时间戳插入到数据库中,但我一直收到错误::

  

无法修改“W_Date”列   因为它是一个计算列   或者是UNION运算符的结果。

有人可以对此有所了解。此外,我在标签中自动化我的asp中的日期时间,然后使用以下代码拉出sql插入的文本。

lblDate.Text = DateTime.Now.ToString();

这是对的吗?

以下是我存储的Proc代码:

@date date
AS
BEGIN
  INSERT INTO tbl_Wiki(W_Title, C_ID, W_Date)
  VALUES (@title, @c_ID, GETDATE())
END

2 个答案:

答案 0 :(得分:1)

如果W_Title是正确的列名,那么您的ASP.NET代码听起来没有任何问题。您是否对模式有足够的控制权以查看W_Title是否为计算列?

此外,您似乎已经过了" date"作为proc的参数,但是你没有在INSERT语句中使用它。如果W_Date是一个永远是当前日期的计算列,则应该在insert语句中删除W_Date参数。

答案 1 :(得分:0)

检查表W_Date中列tbl_Wiki的定义。它可能是一个计算列,这意味着你无法修改它。

您可以使用此查询来检查是否计算了列:

select  is_computed 
from    sys.columns 
where   object_id = object_id('tbl_Wiki') 
        and name = 'W_Date'

计算列的示例:

create table Sample (a int, b int, c as sqrt(a*a+b+b))

这里,每次检索行时都会计算c。您无法通过在insertupdate期间指定值来否决计算。