以下存储过程有什么问题吗,该如何修改?(意思是更新Base_Formula_Lx_test表里的内容,更改的字段和更改的内容都是动态的)
Create proc [dbo].[Formula_Lx_FieldNames]
@NeiRong varchar(40),
@bianh varchar(40),
@FieldNames varchar(40)
as
declare @s nvarchar(max)
set @s = 'update Base_Formula_Lx_test set ' + @FieldNames + '=' + @NeiRong + ' where BianH=' + @bianh + ''
Exec(@s)
------解决思路----------------------
我不知道,你的列名是否是多个,更新的内容是什么样的格式,因为如果是字符串,需要加''
看现在的样式没有问题,是出了什么问题呢?
------解决思路----------------------
等号右边赋值的是字符串,本身两边有单引号,在SQL语句的字符串中要双写单引号取消其特殊含义:
set @s = 'update Base_Formula_Lx_test set ' + @FieldNames + '=''' + @NeiRong + ''' where BianH=''' + @bianh + ''''
------解决思路----------------------
如果执行:
exec [dbo].[Formula_Lx_FieldNames] 'AA','BB','CC'
@s 结果是:update Base_Formula_Lx_test set CC=AA where BianH=BB
所以改为:
set @s = 'update Base_Formula_Lx_test set ' + @FieldNames + '=''' + @NeiRong + ''' where BianH=''' + @bianh + ''''