Perché ricevo questo errore
Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'.
quando provo a utilizzare sp_executesql?
Perché ricevo questo errore
Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'.
quando provo a utilizzare sp_executesql?
Risposte:
Sembra che tu stia chiamando sp_executesql con un'istruzione VARCHAR, quando deve essere NVARCHAR.
ad esempio, questo darà l'errore perché @SQL deve essere NVARCHAR
DECLARE @SQL VARCHAR(100)
SET @SQL = 'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL
Così:
DECLARE @SQL NVARCHAR(100)
SET @SQL = 'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL
La soluzione è mettere una N davanti sia al tipo che alla stringa SQL per indicare che si tratta di una stringa di caratteri a doppio byte:
DECLARE @SQL NVARCHAR(100)
SET @SQL = N'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL