当我尝试使用sp_executesql时,为什么会得到“Procedure expectpects parameter”@statement“types为”ntext / nchar / nvarchar“。
为什么我得到这个错误
Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'.
当我尝试使用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
解决的方法是在types和SQLstring之前放一个N来表示它是一个双字节string:
DECLARE @SQL NVARCHAR(100) SET @SQL = N'SELECT TOP 1 * FROM sys.tables' EXECUTE sp_executesql @SQL