Dlaczego otrzymuję ten błąd
Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'.
kiedy próbuję użyć sp_executesql?
Dlaczego otrzymuję ten błąd
Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'.
kiedy próbuję użyć sp_executesql?
Odpowiedzi:
Wygląda na to, że dzwonisz do sp_executesql z instrukcją VARCHAR, kiedy musi to być NVARCHAR.
np. spowoduje to błąd, ponieważ @SQL musi być NVARCHAR
DECLARE @SQL VARCHAR(100)
SET @SQL = 'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL
Więc:
DECLARE @SQL NVARCHAR(100)
SET @SQL = 'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL
Rozwiązaniem jest umieszczenie N przed typem i ciągiem SQL, aby wskazać, że jest to dwubajtowy ciąg znaków:
DECLARE @SQL NVARCHAR(100)
SET @SQL = N'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL