存储过程中有一语句
set @sql = N'insert into Nat(ID, IP) values (' + @C_ID + ', ' + @CJQ_IP + ' )'
存储过程语法没错的当在查询分析器里 执行 存储过程,就报 在上下文中不允许使用名称“xxx”的错误
我这里@C_ID的变量值是 ch001,所以这里报的错是 在上下文中不允许使用名称“ch001”。
这个错误网上一搜一大堆,但是在存储过程里该怎么改?

解决方案 »

  1.   

    try this,set @sql = N'insert into Nat(ID, IP) values(''' + @C_ID + ''', ''' + @CJQ_IP + ''')'
      

  2.   

    你是不是少了个use 数据库名啊?
      

  3.   

    你print出来就知道是什么结果了
      

  4.   

    values()里的值要用单引号括起来,在动态SQL里,单引号要用2个单引号表示,
    再加上原先的1个单引号,所以说3个单引号.调试时可print @sql打印出来看看.
      

  5.   

    set @sql = N'insert into Nat(ID, IP) values(''' + @C_ID + ''', ''' + @CJQ_IP + ''')'
    要用3个单引号是因为,sql语句中 两个单引号算一个字符串的单引号,比如:''''  算一个字符串单引号,''''''算两个字符串单引号。
    你想理解就这样:
    declare @sql varchar(100)
    set @sql='''bbb'',''ccc'',''ddd'''
    print @sql
    你看看结果就知道了