学习存储过程中遇到的一个小问题,请教各位前辈
一下是其中的一段
set @sql = 'update temp3 set fee '+rtrim(@i)+ '= c.month_price , '+ 'sumfee '+rtrim(@i)+ '= c.sum_price '+ ' from #temp1 c,temp3 d where c.corp_name=d.corp_name and c.charge_name = '+@fee
print @sql
exec(@sql)
执行后报错:
update temp3 set fee1= c.month_price ,sumfee1= c.sum_price from #temp1 c,temp3 d where c.corp_name=d.corp_name and c.charge_name = 罚没收入
服务器: 消息 207,级别 16,状态 3,行 1
列名 '罚没收入 ' 无效。
应当如何修改?
------解决方案--------------------set @sql = 'update temp3 set fee '+rtrim(@i)+ '= c.month_price , '+ 'sumfee '+rtrim(@i)+ '= c.sum_price '+ ' from #temp1 c,temp3 d where c.corp_name=d.corp_name and c.charge_name = ' ' '+@fee+ ' ' ' '
print @sql
exec(@sql)
------解决方案--------------------set @sql = 'update temp3 set fee '+rtrim(@i)+ '= c.month_price , '+ 'sumfee '+rtrim(@i)+ '= c.sum_price '+ ' from #temp1 c,temp3 d where c.corp_name=d.corp_name and c.charge_name = ' ' '+@fee+ ' ' ' '
print @sql
exec(@sql)
------解决方案--------------------字符串中的 ' '代表 '
select * from tb where a= '123 '
与
declare @s varchar(10)
set @s = '123 '
exec( 'select * from tb where a= ' ' '+@s+ ' ' ' ')相同
------解决方案--------------------set @sql = 'update temp3 set fee '+rtrim(@i)+ '= c.month_price , '+ 'sumfee '+rtrim(@i)+ '= c.sum_price '+ ' from #temp1 c,temp3 d where c.corp_name=d.corp_name and c.charge_name = ' ' '+@fee+ ' ' ' '
print @sql
exec(@sql)
---------------------------------------------------
因为是字符需要‘’符号引用!~~~~而 ' '代表的是 '。。。