我创建了一个存储过程,它有两个语句insert
和update
。
它有两个参数:
@content as nvarchar(10),
@fieldName as int
在Update
行中,一切正常,但不会插入表格。
语法和一切都是正确的但是当我执行
Execute sp_update 432,4
SQL Server显示此错误:
Msg 207,Level 16,State 1,Line 1
列名称“up”无效。
消息207,级别16,状态1,行1 列名称“Field3”无效。
这是我的剧本:
ALTER procedure [dbo].[sp_update]
@content as nvarchar(10),
@fieldName as int
as
declare @ff as varchar
set @ff = Convert(varchar,@fieldName)
declare @f as char(7)
set @f = 'Field'+ @ff
declare @sqlupdate varchar(500)
declare @sqlinserttoChangelog varchar(500)
set @sqlinserttoChangelog = 'Insert Into dbo.changelog (changeType, fieldname) Values ('+'up'+','+@f+')'
Exec (@sqlinserttoChangelog)
set @sqlupdate = 'update TableTest set ' + @f + ' = '+@Content
Exec (@sqlupdate)
答案 0 :(得分:5)
由于您正在创建动态sql ,因此值应使用单引号进行换行。要逃避单引号,必须加倍,例如
set @sqlinserttoChangelog = 'Insert Into dbo.changelog (changeType, fieldname) Values ('''+'up'+''', '+@f+')'
与content
set @sqlupdate = 'update TableTest set ' + @f + ' = '''+ @Content + ''''