このエラーが発生するのはなぜですか
プロシージャは、タイプ'ntext / nchar/nvarchar'のパラメータ'@statement'を必要とします。
使おうとしsp_executesql
たら?
このエラーが発生するのはなぜですか
プロシージャは、タイプ'ntext / nchar/nvarchar'のパラメータ'@statement'を必要とします。
使おうとしsp_executesql
たら?
NVARCHARである必要があるときに、VARCHARステートメントを使用してsp_executesqlを呼び出しているように聞こえます。
たとえば、@ 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
解決策は、タイプとSQL文字列の両方の前にNを付けて、それが2バイト文字列であることを示すことです。
DECLARE @SQL NVARCHAR(100)
SET @SQL = N'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL
NVARCHARの後ろにある角かっこ「(100)」を忘れてしまいました。