8
votes

Syntaxe incorrecte près de 'sp_executesql'

Je ne comprends pas pourquoi ce qui suit me donne l'erreur. Je pensais que c'était lié à la section commentée, mais @sql est 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


0 commentaires

3 Réponses :


3
votes

Pourquoi avez-vous cela ci-joint dans un début ... fin? Exécution du sp_executeql externe Le bloc fonctionnera.

éventuellement, vous pouvez mettre un EXEC avant SP_EXECUTSQL.


0 commentaires

15
votes

C'est pourquoi:

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


2 commentaires

Vous pouvez appeler un processus stocké sans ni exécuté, mais uniquement lorsque l'appel à la procédure stockée est la seule instruction dans le bloc.


Ce doit être la première déclaration, pas nécessairement le seul.



0
votes

À certaines occasions, je devais utiliser Master aussi bien:

exec master..sp_executesql 


0 commentaires