Uw sp_executesql SQL zou waarschijnlijk moeten zijn;
DECLARE @SQL as nvarchar(128) = 'select ' + @Columns + ' from ' +
@TableName + ' where [email protected]'
Hierdoor kunt u sp_executesql aanroepen met @eStatus als parameter in plaats van deze in de SQL in te sluiten. Dat geeft het voordeel dat @eStatus elke tekens kan bevatten en het zal, indien nodig om veilig te zijn, automatisch correct worden ontsnapt door de database.
Vergelijk dat met de SQL die vereist is voor EXEC;
DECLARE @SQL as nvarchar(128) = 'select ' + @Columns + ' from ' +
@TableName + ' where Status=' + char(39) + @Status + char(39)
...waarbij een char(39) ingebed in @Status uw SQL ongeldig maakt en mogelijk een SQL-injectiemogelijkheid creëert. Als @Status bijvoorbeeld is ingesteld op O'Reilly
, uw resulterende SQL zou zijn;
select acol,bcol,ccol FROM myTable WHERE Status='O'Reilly'