关于动态存储过程的问题

本人新手,编写了下面的程序,大神们估计一看就懂,但是在执行的时候总是报如下的错误,请大神们提示一下。

 begin
declare @sql1 nvarchar(max)
declare @char_table varchar(30)
declare @MacNo varchar(20)
declare @var_table varchar(30)
declare @T1 datetime
declare @T2 datetime
set @var_table = '制造一部'
set @MacNo = '1#' 
if  @var_table = '制造一部'
    set @char_table = 'CG_INFO_ONE'
else
    set @char_table = 'CG_INFO_TWO'
set @sql1 = 'select TRADEMARK as 品牌, MACHINE_NAME from ' + @char_table + ' where MACHINE_NAME  =' +@MacNo
print @sql1
exec sp_executesql @sql1
end

执行后的提示为:select TRADEMARK as 品牌, MACHINE_NAME from CG_INFO_ONE where MACHINE_NAME =1#
消息 102,级别 15,状态 1,第 1 行
“#”附近有语法错误。

我找了很久始终找不到原因,谢谢。

4个回答

#可能是个特殊字符,可能需要加个\。
或把#单独在改成其他字母。

需要在@MacNo两边加上引号
= ''' +@MacNo + ''''

dgyzlc
dgyzlc 请问大神,为什么会出错了?在请教一下,您这几个冒号的意思
接近 2 年之前 回复

对的,字符串要加‘’将内容括起来。

试着将字符串加个双引号 字符串拼接应该要加引号的

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!