Sintassi non corretta in prossimità 'sp_executesql'
-
18-09-2019 - |
Domanda
Non capisco il motivo per cui il seguente mi sta dando l'errore. Ho pensato che era legato alla sezione commentata, ma @SQL è di 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
Soluzione
Questo è il motivo per cui:
-- 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
Non si può semplicemente chiamare un proc memorizzato senza un exec quando si è in un blocco.
Altri suggerimenti
Perché avete questo racchiuso in un vicolo BEGIN ...? Esecuzione del sp_executesql esterna del blocco funzionerà.
In alternativa si può mettere un exec prima sp_executesql.
In alcune occasioni ho dovuto usare maestro così:
exec master..sp_executesql
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow