我无法在SQL Server中插入表

时间:2013-01-28 03:01:14

标签: sql-server stored-procedures sql-update sql-insert

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

它有两个参数:

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

1 个答案:

答案 0 :(得分:5)

由于您正在创建动态sql ,因此值应使用单引号进行换行。要逃避单引号,必须加倍,例如

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

content

相同
set @sqlupdate = 'update TableTest set ' + @f + ' = '''+ @Content + ''''