UPDATE SC SET cno='c4' WHERE grade=87 --执行正确DECLARE @str1 nvarchar(24) DECLARE @str2 nvarchar(24) DECLARE @str nvarchar(80) SET @str1='UPDATE SC SET cno="c4"' SET @str2='WHERE grade=87' SET @str=@str1+@str2 EXEC sp_executesql @str
 
--报错,说"c4"是非法列名,怎么办啊?去掉双引号报grade附件语法错。SQL server2005, cno 是 char(5)

解决方案 »

  1.   

    两个''''
    表一个,输出是'你PRINT 出来就知道了
      

  2.   

    DECLARE @str1 nvarchar(24) 
    DECLARE @str2 nvarchar(24)
     DECLARE @str nvarchar(80) 
    SET @str1='UPDATE SC SET cno=''c4''' 
    SET @str2=' WHERE grade=87' 
    SET @str=@str1+@str2 
    PRINT  @str
     
    UPDATE SC SET cno='c4' WHERE grade=87WHERE 条件那里还有个空格
      

  3.   

    DECLARE @str1 nvarchar(24) 
    DECLARE @str2 nvarchar(24) 
    DECLARE @str nvarchar(80) 
    SET @str1='UPDATE SC SET cno=''c4'''
    SET @str2=' WHERE grade=87' 
    SET @str=@str1+@str2
    --print @str 
    EXEC sp_executesql @strselect * from SC