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
¿Fue útil?

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
scroll top