2010-09-17 6 views
1
DECLARE @SQL Varchar(Max) 
DECLARE @DESCR Varchar(Max) 

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

Le problème est lorsque le client entre une apostrophe dans la variable @Descr.APOSTROPHE DYNAMIC SQL

Q: Dans Microsoft SQL Server 2005, comment remplacer toutes les apostrophies par une double apostrophe?

Répondre

7

Si cela doit même être SQL dynamique (le code que vous avez montré ne l'est pas), alors utilisez SQL paramétré et sp_executesql pour éviter les possibilités d'injection SQL.

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

-- Customer enters description into @Descr 


SET @SQL = 'Update TableName SET [email protected] WHERE ID=123' 

exec sp_executesql @SQL, N'@DESCR NVarchar(Max)', @DESCR [email protected] 
+0

Merci Martin! Oui, il faut que ce soit dynamique - je ne voulais pas compliquer l'exemple. –

4

Non recommandé pour la production, mais fonctionnera.

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