Почему я получаю эту ошибку
Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'.
когда я пытаюсь использовать sp_executesql?
Почему я получаю эту ошибку
Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'.
когда я пытаюсь использовать sp_executesql?
Ответы:
Похоже, вы вызываете sp_executesql с оператором VARCHAR, когда это должно быть NVARCHAR.
например, это приведет к ошибке, потому что @SQL должен быть NVARCHAR
DECLARE @SQL VARCHAR(100)
SET @SQL = 'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL
Так:
DECLARE @SQL NVARCHAR(100)
SET @SQL = 'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL
Решение состоит в том, чтобы поставить N перед типом и строкой SQL, чтобы указать, что это строка двухбайтовых символов:
DECLARE @SQL NVARCHAR(100)
SET @SQL = N'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL