在上下文中不允许使用名称“xxx”的错误
存储过程中有一语句
set @sql = N'insert into Nat(ID, IP) values (' + @C_ID + ', ' + @CJQ_IP + ' )'
存储过程语法没错的
当在查询分析器里 执行 存储过程,就报 在上下文中不允许使用名称“xxx”的错误
我这里@C_ID的变量值是 ch001,所以这里报的错是 在上下文中不允许使用名称“ch001”。。。。
这个错误网上一搜一大堆,但是在存储过程里该怎么改?
------解决方案--------------------try this,
set @sql = N'insert into Nat(ID, IP) values(''' + @C_ID + ''', ''' + @CJQ_IP + ''')'
------解决方案--------------------
values()里的值要用单引号括起来,在动态SQL里,单引号要用2个单引号表示,
再加上原先的1个单引号,所以说3个单引号.调试时可print @sql打印出来看看.
------解决方案--------------------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
你看看结果就知道了