改為set @strSQL = 'update NC_Article set HitsTime='''+ cast(@nowTime as varchar(20)) + ''' where '+ @strWhere

解决方案 »

  1.   

    不行啊,declare @nowTime datetime
    declare @strWhere varchar(200)
    declare @strSQL varchar(200) 
    set @nowTime=GetDate()
    set @strWhere= 'ArticleID=161'
    set @strSQL = 'update NC_Article set HitsTime='''+ cast(@nowTime as varchar(20)) + ''' where '+ @strWhere
    select @strSQL
    exec sp_executesql @strSQL会报错如下:
     
    (所影响的行数为 1 行)服务器: 消息 214,级别 16,状态 2,过程 sp_executesql,行 8
    过程需要参数 '@statement' 为 'ntext/nchar/nvarchar' 类型。若去掉exec sp_executesql @strSQL,则select @strSQL的结果为:
    update NC_Article set HitsTime='03  5 2007  2:49PM' where ArticleID=161是时间格式不对吧?
      

  2.   

    這個錯誤,是由於你的類型不對,上面的錯誤提示已經寫出來了。改為如下再試試看declare @nowTime datetime
    declare @strWhere Nvarchar(200)
    declare @strSQL Nvarchar(200) 
    set @nowTime=GetDate()
    set @strWhere= N'ArticleID=161'
    set @strSQL = N'update NC_Article set HitsTime='''+ cast(@nowTime as varchar(20)) + ''' where '+ @strWhere
    select @strSQL
    exec sp_executesql @strSQL
      

  3.   

    仍然报错啊!(所影响的行数为 1 行)服务器: 消息 208,级别 16,状态 1,行 1
    对象名 'NC_Article' 无效。若去掉exec sp_executesql @strSQL,则select @strSQL的结果为:
    update NC_Article set HitsTime='03  5 2007  3:11PM' where ArticleID=161这条SQL语句可以正常执行
      

  4.   

    "对象名 'NC_Article' 无效。"檢查一下1.你的數據庫有沒有選擇錯誤。
    2.你的表名有沒有寫錯。
      

  5.   

    没有,上面已经说了,若去掉exec sp_executesql @strSQL,则select @strSQL的结果为:
    update NC_Article set HitsTime='03 5 2007 3:11PM' where ArticleID=161这条SQL语句可以正常执行
      

  6.   

    update NC_Article set HitsTime='03 5 2007 3:11PM' where ArticleID=161這句可以執行?
      

  7.   

    Create Table NC_Article
    (ArticleID Int,
     HitsTime DateTime)
    Insert NC_Article Select 161, '2007-02-01'
    GO
    declare @nowTime datetime
    declare @strWhere Nvarchar(200)
    declare @strSQL Nvarchar(200) 
    set @nowTime=GetDate()
    set @strWhere= N'ArticleID=161'
    set @strSQL = N'update NC_Article set HitsTime='''+ cast(@nowTime as varchar(20)) + ''' where '+ @strWhere
    --select @strSQL
    exec sp_executesql @strSQL
    GO
    Select * From NC_Article
    GO
    Drop Table NC_Article
    --Result
    /*
    ArticleID HitsTime
    161 2007-03-05 15:32:00.000
    */
    我測試了下,一點問題都沒有的。你的這段代碼和你的那條SQL語句是在查詢分析器中同一個頁面下測試的嗎?感覺是你的數據庫沒有選擇正確引起的。
      

  8.   


    set @strSQL = N'update NC_Article set HitsTime='''+ cast(@nowTime as varchar(20)) + ''' where '+ @strWhere
    改為
    set @strSQL = N'update NC_Article set HitsTime='''+ Convert(Varchar, @nowTime, 120) + ''' where '+ @strWhere
    試試看