96

このエラーが発生するのはなぜですか

プロシージャは、タイプ'ntext / nchar/nvarchar'のパラメータ'@statement'を必要とします。

使おうとしsp_executesqlたら?

4

3 に答える 3

220

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
于 2010-04-30T10:47:11.330 に答える
23

解決策は、タイプとSQL文字列の両方の前にNを付けて、それが2バイト文字列であることを示すことです。

DECLARE @SQL NVARCHAR(100) 
SET @SQL = N'SELECT TOP 1 * FROM sys.tables' 
EXECUTE sp_executesql @SQL
于 2010-04-30T10:51:23.237 に答える
0

NVARCHARの後ろにある角かっこ「(100)」を忘れてしまいました。

于 2020-02-14T09:03:27.487 に答える