1

ステートメントは次のとおりです。

exec sp_executesql N'CRM_ValidateUser @p0, @p1, @p2',
    N'@p0 nvarchar(5),@p1 nvarchar(4),@p2 int',@p0=N'login',@p1=N'pass',@p2=15

このエラーメッセージが表示されるのはなぜですか。

メッセージ102、レベル15、状態1、行1
「CRM_ValidateUser」の近くの構文が正しくありません。

4

2 に答える 2

4

他のコマンドがバッチの一部として送信される場合は、EXECと言う必要があります。この場合、これはパラメーター定義になるため、実際にSQLServerに返送されるバッチは次のようになります。

DECLARE @p0 NVARCHAR(5);
...
CRM_ValidateUser ...

そして、これがエラーメッセージが表示される理由です。ストアドプロシージャの呼び出しがバッチの最初のEXECステートメントである場合にのみ省略できます。とにかくIMHOを除外しないでください。試す:

EXEC sp_executesql N'EXEC CRM_ValidateUser...

また、スキーマプレフィックスを指定することをお勧めします。

于 2012-04-17T18:21:21.963 に答える
-1
DECLARE @p0 NVARCHAR(5);
DECLARE @p1 NVARCHAR(4);
DECLARE @p2 INT;

SET @p0 =N'login';

SET @p1 = N'pass';

SET @p2 = 15;
EXECUTE sp_executesql N'CRM_ValidateUser', @p0, @p1, @p2;
于 2012-04-17T18:25:19.823 に答える