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 以防任何其他命令作为批处理的一部分传输。在这种情况下,它将是参数定义,因此实际发送回 SQL Server 的批处理将类似于:

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

这就是您出现错误消息的原因。如果存储过程调用是批处理中的第一EXEC条语句,则只能省略,恕我直言,无论如何都不应该排除。尝试:

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 回答