为什么我得到“程序期望参数'@statement'类型为'ntext/nchar/nvarchar'。”当我尝试使用sp_executesql?
问题描述:
当我尝试使用sp_executesql的为什么我得到这个错误为什么我得到“程序期望参数'@statement'类型为'ntext/nchar/nvarchar'。”当我尝试使用sp_executesql?
Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'.
?
答
听起来就像你用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
答
解决的办法是把一个N两个他类型前面和SQL字符串来表示它是双字节字符串:
DECLARE @SQL NVARCHAR(100)
SET @SQL = N'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL
+0
这不是这里的解决方案 - 这仍然会出错,因为你有它。解决方案是将VARCHAR变量更改为NVARCHAR – AdaTheDev 2010-04-30 10:54:35
+0
AdaTheDev,你是对的,我已经修复了现在 – 2010-04-30 11:10:02
你是如何执行它的?在T-SQL中?从一个程序?你是否传递了所需的“@statement”参数? – 2010-04-30 10:45:01