为什么我会收到此错误
Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'.
当我尝试使用sp_executesql时?
答案 0 :(得分:194)
听起来你正在使用VARCHAR语句调用sp_executesql,当它需要是NVARCHAR时。
e.g。这将产生错误,因为@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
答案 1 :(得分:18)
解决方案是在他输入和SQL字符串前加一个N来表示它是一个双字节字符串:
DECLARE @SQL NVARCHAR(100)
SET @SQL = N'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL
答案 2 :(得分:0)
我错过了另一个小细节:我忘记了NVARCHAR后面的方括号“((100))”。