Почему я получаю "процедура ожидает параметр' @statement 'типа' ntext/nchar / nvarchar'."когда я пытаюсь использовать sp executesql?


почему я получаю эту ошибку

Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'.

когда я пытаюсь использовать процедуру sp_executesql?

2 69

2 ответа:

похоже, что вы вызываете 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 перед типом he и строкой SQL, чтобы указать, что это двухбайтовая символьная строка:

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