96 votes

Pourquoi suis-je "Procédure s'attend à ce paramètre '@énoncé du type "ntext/nchar/nvarchar"." lorsque j'essaie d'utiliser sp_executesql?

Pourquoi j'ai cette erreur

Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'.

lorsque j'essaie d'utiliser sp_executesql?

220voto

AdaTheDev Points 53358

On dirait que vous êtes d'appel sp_executesql avec un VARCHAR, alors il doit être de type NVARCHAR.

par exemple, Cela donnera à l'erreur car @SQL doit être de type NVARCHAR

DECLARE @SQL VARCHAR(100)
SET @SQL = 'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL

Donc:

DECLARE @SQL NVARCHAR(100)
SET @SQL = 'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL

23voto

Daniel Renshaw Points 12272

La solution est de mettre N à la fois du type et de la chaîne SQL pour indiquer qu'il s'agit d'un double-byte character string:

DECLARE @SQL NVARCHAR(100) 
SET @SQL = N'SELECT TOP 1 * FROM sys.tables' 
EXECUTE sp_executesql @SQL

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X