АПОСТРОФ ДИНАМИЧЕСКИЙ SQL - PullRequest
1 голос
/ 17 сентября 2010
DECLARE @SQL Varchar(Max)
DECLARE @DESCR Varchar(Max)

-- Customer enters description into @Descr
SET @SQL = 'Update TableName SET FieldName='''
+ @DESCR
+ ''' WHERE ID=123'

Проблема в том, что клиент вводит апостроф в переменную @Descr.

В: В Microsoft SQL Server 2005 как заменить все апострофы двойным апострофом?

Ответы [ 2 ]

8 голосов
/ 17 сентября 2010

Если это вообще должен быть динамический SQL (код, который вы показали, не делает), тогда используйте параметризованный SQL и sp_executesql для этого, чтобы избежать возможности внедрения SQL.

DECLARE @SQL NVarchar(Max)
DECLARE @DESCR NVarchar(Max)

-- Customer enters description into @Descr


SET @SQL = 'Update TableName SET FieldName=@DESCR WHERE ID=123'

exec sp_executesql @SQL, N'@DESCR NVarchar(Max)', @DESCR =@DESCR
4 голосов
/ 17 сентября 2010

Не рекомендуется для производства, но будет работать.

SET @DESCR = REPLACE(@DESCR, '''', '''''')
...