Почему я получаю «Процедура ожидает параметр« @statement »типа« ntext / nchar / nvarchar ».» когда я пытаюсь использовать sp_executesql? - PullRequest
83 голосов
/ 30 апреля 2010

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

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

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

Ответы [ 2 ]

195 голосов
/ 30 апреля 2010

Похоже, вы вызываете 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
18 голосов
/ 30 апреля 2010

Решение состоит в том, чтобы поставить N перед типом he и строкой SQL, чтобы указать, что это двухбайтовая строка символов:

DECLARE @SQL NVARCHAR(100) 
SET @SQL = N'SELECT TOP 1 * FROM sys.tables' 
EXECUTE sp_executesql @SQL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...