2009-08-18 15 views
7

No entiendo por qué me está dando el error. Pensé que estaba relacionado con la sección comentada, pero @SQL es nvarchar (4000).Sintaxis incorrecta cerca de 'sp_executesql'

BEGIN 
    sp_executesql N'SELECT ''td''' 
    --sp_executesql @SQL, N'@StartDate DateTime, @EndDate DateTime, @End2 DateTime, @Program varchar(4)', @StartDate, @EndDate, @End2, @Program 
END 

Respuesta

13

Esta es la razón por:

 
-- 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 simplemente llamar a un procedimiento almacenado sin un ejecutivo cuando se está en un bloque.

+1

puede llamar a un procedimiento almacenado sin y exec, pero sólo cuando la llamada al procedimiento almacenado es la única declaración en el bloque. –

+1

tiene que ser la primera declaración, no necesariamente la única. – Tao

2

¿Por qué tiene esto encerrado en BEGIN ... END? Al ejecutar sp_executesql externo, el bloque funcionará.

Opcionalmente puede poner un exec antes de sp_executesql.

0

En algunas ocasiones tuve que usar principal, así:

exec master..sp_executesql 
Cuestiones relacionadas