sqlserver存储过程拼接sql语句,执行报错“列名无效”

今天写存储过程,遇到一个问题,具体如下:

需求是要统计一张报表,这张表的列不固定,因此在存储过程里做插入语句的时候,就用到了sql语句拼接再执行。

这里拼接的insert语句是

set @sql= 'insert into ##tn(prj) values('+@pzid+')'
		

如果按照上述语句执行就会报错“列名无效”;

改为

set @sql= 'insert into ##tn(prj) values('+char(39)+@pzid+char(39)+')'

加上char(39)这样就可以了。

至于为什么加char(39),后来我上网查了相关资料,知道这是ASCII码值,表示单引号。

到此问题解决,以上是我遇到的问题,做个笔记,仅供参考。

你可能感兴趣的:(sqlserver存储过程拼接sql语句,执行报错“列名无效”)