当我打电话给sp_executesql
并且我传递了varchar参数时,我遇到了问题
我收到了这个错误:
过程需要参数'@statement'的类型 'NTEXT / NCHAR / nvarchar的'。
答案 0 :(得分:1)
Psychic调试器说你要么传递SP_ExecuteSQL
varchar类型的变量(make it nvarchar),要么你有一个你没有使用unicode前缀的字符串:
E.g。
Exec sp_executesql 'select * from something'
要修复它,请使用:
Exec sp_executesql N'select * from something'
注意字符串上的N
前缀。
答案 1 :(得分:0)
这意味着@statement
的{{1}}参数需要sp_executesql
。
不意味着您的参数必须是nvarchar。
当然,如果你没有参数,为什么使用sp_executesql?
nvarchar
答案 2 :(得分:0)
试试这个:
e.g。这将产生错误,因为@SQL需要是NVARCHAR
下面给出错误:
DECLARE @SQL VARCHAR(100)
SET @SQL = 'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL
所以:使用NVARCHAR(100)
DECLARE @SQL NVARCHAR(100)
SET @SQL = 'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL