以下是声明:
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
为什么我收到此错误消息:
Msg 102,Level 15,State 1,Line 1
“CRM_ValidateUser”附近的语法不正确。
答案 0 :(得分:4)
如果任何其他命令作为批处理的一部分传输,则需要说EXEC。在这种情况下,它将是参数定义,因此实际发送回SQL Server的批处理将类似于:
DECLARE @p0 NVARCHAR(5);
...
CRM_ValidateUser ...
这就是您的错误消息发生的原因。如果存储过程调用是批处理中的 first 语句,则只能省略EXEC
,并且绝不应该排除IMHO。尝试:
EXEC sp_executesql N'EXEC CRM_ValidateUser...
指定架构前缀也是一个好主意。
答案 1 :(得分:-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;