今天写存储过程,遇到一个问题,具体如下:
需求是要统计一张报表,这张表的列不固定,因此在存储过程里做插入语句的时候,就用到了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码值,表示单引号。
到此问题解决,以上是我遇到的问题,做个笔记,仅供参考。