0

電話をかけたときに問題に直面sp_executesqlし、varchar パラメータを渡しました。
このエラーが発生しました:

プロシージャは、タイプ 'ntext/nchar/nvarchar' のパラメーター '@statement' を想定しています。

4

3 に答える 3

1

Psychic デバッガーは、varchar 型の変数に渡してSP_ExecuteSQLいる (nvarchar にする) か、Unicode プレフィックスを使用していない文字列を持っていると言います。

例えば

Exec sp_executesql 'select * from something'

それを修正するには、次を使用します。

Exec sp_executesql N'select * from something'

N文字列のプレフィックスに注意してください。

于 2013-02-12T08:43:13.570 に答える
0

これを試して :

例 @SQL は NVARCHAR である必要があるため、これによりエラーが発生します。

以下にエラーを出します:

DECLARE @SQL VARCHAR(100)
SET @SQL = 'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL

だから:使用NVARCHAR(100)

DECLARE @SQL NVARCHAR(100)
SET @SQL = 'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL
于 2013-02-12T08:43:06.560 に答える
0

これはexpectsの@statementパラメータを意味します。sp_executesqlnvarchar

これはパラメーターが nvarchar でなければならないという意味ではありません。 もちろん、パラメーターがないのに、なぜ sp_executesql を使用しているのでしょうか。

CREATE TABLE #foo (bar varchar(100) NOT NULL);
DECLARE @filter varchar(100) = 'bob';
EXEC sys.sp_executesql
      N'SELECT * FROM #foo WHERE bar = @p1', --NVARCHAR because of N prefix
      N'@p1 varchar(100)', --NVARCHAR because of N prefix
      @filter --VARCHAR
DROP TABLE #foo
于 2013-02-12T08:42:32.353 に答える