ステートメントは次のとおりです。
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」の近くの構文が正しくありません。
ステートメントは次のとおりです。
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」の近くの構文が正しくありません。
他のコマンドがバッチの一部として送信される場合は、EXECと言う必要があります。この場合、これはパラメーター定義になるため、実際にSQLServerに返送されるバッチは次のようになります。
DECLARE @p0 NVARCHAR(5);
...
CRM_ValidateUser ...
そして、これがエラーメッセージが表示される理由です。ストアドプロシージャの呼び出しがバッチの最初のEXEC
ステートメントである場合にのみ省略できます。とにかくIMHOを除外しないでください。試す:
EXEC sp_executesql N'EXEC CRM_ValidateUser...
また、スキーマプレフィックスを指定することをお勧めします。
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;