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

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

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

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

90
задан abatishchev 15 December 2014 в 20:20
поделиться

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
208
ответ дан 24 November 2019 в 06:58
поделиться

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

DECLARE @SQL NVARCHAR(100) 
SET @SQL = N'SELECT TOP 1 * FROM sys.tables' 
EXECUTE sp_executesql @SQL
22
ответ дан 24 November 2019 в 06:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: