为什么我会收到此错误
过程需要类型为“ntext/nchar/nvarchar”的参数“@statement”。
当我尝试使用sp_executesql
?
为什么我会收到此错误
过程需要类型为“ntext/nchar/nvarchar”的参数“@statement”。
当我尝试使用sp_executesql
?
听起来您正在使用 VARCHAR 语句调用 sp_executesql,而它需要是 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
解决方法是在类型和 SQL 字符串前面都放一个 N,表示它是双字节字符串:
DECLARE @SQL NVARCHAR(100)
SET @SQL = N'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL
我错过了另一个小细节:我忘记了 NVARCHAR 后面的括号“(100)”。