Sintaxis incorrecta cerca de 'sp_executesql'
-
18-09-2019 - |
Pregunta
No entiendo por qué la siguiente me está dando el error. Pensé que estaba relacionada con la sección comentada, pero @SQL es de tipo nvarchar (4000).
BEGIN
sp_executesql N'SELECT ''td'''
--sp_executesql @SQL, N'@StartDate DateTime, @EndDate DateTime, @End2 DateTime, @Program varchar(4)', @StartDate, @EndDate, @End2, @Program
END
Solución
Esta es la razón:
-- This works just fine: BEGIN -- You must have an exec before your sp_executesql or it will not work in a block exec sp_executesql N'SELECT ''td''' END
No se puede llamar a un procedimiento almacenado sin un exec cuando se está en un bloque.
Otros consejos
¿Por qué tiene esta encerrado en un END BEGIN ...? Ejecución del sp_executesql externa del bloque va a funcionar.
Opcionalmente se puede poner un exec antes de sp_executesql.
En algunas ocasiones he tenido que usar principal, así:
exec master..sp_executesql
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow