Я создал хранимую процедуру с двумя операторами insert
и update
.
Он получает два параметра:
@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)
EXEC
, всегда должна быть типаNVARCHAR
, поскольку именно этого ожидаетEXEC
. В вашем случае вы вызываете неявное преобразование изvarchar
вnvarchar
, которое (а) требует времени и усилий и (б) может привести к очень трудным для поиска ошибкам, если вы когда-либо используете символы, отличные от ANSI... - person marc_s   schedule 28.01.2013