Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Warum erhalte ich Prozedur erwartet Parameter „@statement“ vom Typ „ntext/nchar/nvarchar“. wenn ich versuche, sp_executesql zu verwenden?

Klingt, als würden Sie sp_executesql mit einer VARCHAR-Anweisung aufrufen, wenn es NVARCHAR sein muss.

z.B. Dies gibt den Fehler, weil @SQL NVARCHAR sein muss

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

Also:

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