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
È stato utile?

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