首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

在上下文中不允许使用名称“xxx”的异常

2013-04-21 
在上下文中不允许使用名称“xxx”的错误存储过程中有一语句set @sql Ninsert into Nat(ID, IP) values (

在上下文中不允许使用名称“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 + ''')'

[解决办法]
引用:
引用:try this,
SQL code?1set @sql = N'insert into Nat(ID, IP) values(''' + @C_ID + ''', ''' + @CJQ_IP + ''')'

你里面将一个单引号变成3个单引号? 请问为什么要这样?
试过以后,你的是正确的,可以正确执行。但是我想知道为什么……

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
你看看结果就知道了

热点排行