这是声明:
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 以防任何其他命令作为批处理的一部分传输。在这种情况下,它将是参数定义,因此实际发送回 SQL Server 的批处理将类似于:
DECLARE @p0 NVARCHAR(5);
...
CRM_ValidateUser ...
这就是您出现错误消息的原因。如果存储过程调用是批处理中的第一EXEC
条语句,则只能省略,恕我直言,无论如何都不应该排除。尝试:
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;