Neden bu hatayı alıyorum
Prosedür, 'ntext / nchar / nvarchar' türündeki '@statement' parametresini bekliyor.
Ben kullanmaya çalıştığınızda sp_executesql
?
Neden bu hatayı alıyorum
Prosedür, 'ntext / nchar / nvarchar' türündeki '@statement' parametresini bekliyor.
Ben kullanmaya çalıştığınızda sp_executesql
?
Yanıtlar:
NVARCHAR olması gerektiğinde sp_executesql'yi bir VARCHAR deyimiyle çağırıyormuşsunuz gibi görünüyor.
Örneğin, @SQL'in NVARCHAR olması gerektiğinden bu hata verecektir
DECLARE @SQL VARCHAR(100)
SET @SQL = 'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL
Yani:
DECLARE @SQL NVARCHAR(100)
SET @SQL = 'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL
Çözüm, çift baytlık bir karakter dizesi olduğunu belirtmek için hem türün hem de SQL dizesinin önüne bir N koymaktır:
DECLARE @SQL NVARCHAR(100)
SET @SQL = N'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL