1

我创建了一个存储过程,它有两个语句insertupdate.

它得到两个参数:

@content as nvarchar(10),
@fieldName as int

Update一切正常,但它不会插入到表中。语法和一切都是真的,但是当我执行时

Execute sp_update 432,4

SQL Server 显示此错误:

消息 207,级别 16,状态 1,第 1 行
无效的列名称“向上”。
消息 207,级别 16,状态 1,第 1
行列名“字段 3”无效。

这是我的脚本:

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)
4

1 回答 1

5

由于您正在创建动态 sql,因此值应该用单引号引起来。要转义单引号,它必须加倍,例如。

set @sqlinserttoChangelog = 'Insert Into dbo.changelog (changeType, fieldname) Values ('''+'up'+''', '+@f+')'

content

set @sqlupdate = 'update TableTest set ' + @f + ' = '''+ @Content + ''''
于 2013-01-28T03:02:57.153 回答