sp_executesql vrs sp_sqlexec

Estos procedimientos son utilizados comúnmente para ejecutar codigo Transact de manera dinamica; es codigo que armamos a partir de hileras para producir un producto que de otra forma seria un poco complicado.

sp_sqlexec esta en desuso, es un procedimiento que MSSQL ya no soporta y por tanto se deberia de reescribir cualquier codigo que lo este utilizando en este momento.

Cuando ejecutamos codigo dinamico podemos usar sp_executesql o bien exec. Con la diferencia de que el sp_executesql probablemente creara un plan de ejecucion que se pueda reutilizar para ejecuciones posteriores.

Sintaxis


USE master
GO

DECLARE @vsql NVARCHAR(max)

SET @vsql = 'select top 210 * from sys.tables'

EXEC(@vsql)

EXEC sys.sp_sqlexec @vsql

EXEC sys.sp_executesql @vsql