在此上下文中不允许使用   'yan'。此处只允许使用常量、表达式或变量。不允许使用列名。   
    
  为什么??输入数字就可以,其它字符都不行
代码:
declare @aa  varchar(16)
Set @aa = 'yan'
declare  @c_tmp  varchar(250) 
select  @c_tmp  =  'insert  into  tablename(status) values('+@aa+')'  
execute(@c_tmp)

解决方案 »

  1.   

    select  @c_tmp  =  'insert  into  tablename(status) values('''+@aa+''')' 
      

  2.   

    select  @c_tmp  =  'insert  into  tablename(status) values('''+@aa+''')'  
      

  3.   

    select  @c_tmp  =  'insert  into  tablename(status) values('''+@aa+''')' 
      

  4.   

    拼动态sql时字符串参数需要一对额外的单引号,
    你在执行前用 print @c_tmp,把这句打出来,
    就知道为什么你的语句没有成功执行了。
      

  5.   

    楼主你写到有错 以后发现有写动态问题PRINT 出来自己看看!你自己其实可以解决的
      

  6.   

    楼主朋友,问题出现在字符串变量@c_tmp的组合后,可以用print @c_tmp打印一下看看,结果是:
    insert  into  tablename(status) values (yan),yan不是按照字符串送进去的,所以错了,
    改为select @c_tmp = 'insert into tablename(status) values(''' + @aa + ''')' 就可以了,
    在SQL中,三个'表示字符串中的一个'字符,''''表示2个'字符,以后使用的时候可以注意这些东西.