Warum bekomme ich diesen Fehler?
Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'.
Wenn ich versuche, sp_executesql zu verwenden?
Warum bekomme ich diesen Fehler?
Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'.
Wenn ich versuche, sp_executesql zu verwenden?
Antworten:
Klingt so, als würden Sie sp_executesql mit einer VARCHAR-Anweisung aufrufen, wenn es NVARCHAR sein muss.
Beispiel: Dies gibt den Fehler aus, da @SQL NVARCHAR sein muss
DECLARE @SQL VARCHAR(100)
SET @SQL = 'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL
So:
DECLARE @SQL NVARCHAR(100)
SET @SQL = 'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL
Die Lösung besteht darin, ein N vor den Typ und die SQL-Zeichenfolge zu setzen, um anzuzeigen, dass es sich um eine Doppelbyte-Zeichenfolge handelt:
DECLARE @SQL NVARCHAR(100)
SET @SQL = N'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL