使用varchar参数调用sp_executesql

时间:2013-02-12 08:39:59

标签: sql sql-server-2008

当我打电话给sp_executesql并且我传递了varchar参数时,我遇到了问题 我收到了这个错误:

  

过程需要参数'@statement'的类型   'NTEXT / NCHAR / nvarchar的'。

3 个答案:

答案 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