Man*_*ani 90 sql t-sql sql-server dynamic-sql
为什么我会收到此错误
Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'.
Run Code Online (Sandbox Code Playgroud)
当我尝试使用sp_executesql?
Ada*_*Dev 208
听起来像是在使用VARCHAR语句调用sp_executesql时,它需要是NVARCHAR.
例如,这会产生错误,因为@SQL需要是NVARCHAR
DECLARE @SQL VARCHAR(100)
SET @SQL = 'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL
Run Code Online (Sandbox Code Playgroud)
所以:
DECLARE @SQL NVARCHAR(100)
SET @SQL = 'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL
Run Code Online (Sandbox Code Playgroud)
Dan*_*haw 22
解决方案是在其类型和SQL字符串前加一个N来表示它是一个双字节字符串:
DECLARE @SQL NVARCHAR(100)
SET @SQL = N'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL
Run Code Online (Sandbox Code Playgroud)