调用存储过程时提示参数过多,但实际仅传入单个参数的问题排查求助
调用存储过程时提示参数过多,但实际仅传入单个参数的问题排查求助
大家好,我现在在做一个简单的注册/登录API,里面需要调用一个检查邮箱是否存在的存储过程,但遇到了一个奇怪的问题——明明只传了一个参数,却一直提示RequestError: Procedure or function sp_CheckEmail has too many arguments specified.,实在搞不懂哪里出问题了,来求助一下!
我的代码场景
我在API中调用存储过程的代码如下:
db.executeQueryWithParams(config.storedProcedures.CheckEmail, email, (err, result) => { if (err) { console.log(err); } else { console.log("succeeded - ", result); } });
这里的executeQueryWithParams是团队提供的标准工具函数,我已经在其他插入用户信息的逻辑里成功使用过,所以可以排除函数本身的问题。为了方便大家理解,我把这个函数的实现贴出来:
executeQueryWithParams(storedProc, params, callback) { var request = this.getRequest(); for (var key in params) { request.input(key, params[key]); } this.executeRequest(request, storedProc, callback); }
对应的存储过程代码
我调用的存储过程定义是这样的:
ALTER PROCEDURE [dbo].[sp_CheckEmail] @email varchar(255) AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for procedure here SELECT * from [TABLE] WHERE email = @email END
已经排查过的点
- 确认从API请求获取到的
email是单个字符串(比如"example.email@gmail.com"),确实只传入了这一个参数 - 尝试用无特殊字符的简单字符串(比如普通姓名)代替邮箱测试,仍然出现相同的参数过多错误
- 试过修改存储过程,增加到最多5个参数,但问题依旧存在
现在实在找不到问题根源,有没有大佬能帮忙分析一下哪里出错了?
备注:内容来源于stack exchange,提问作者alex.saxton98
相关产品推荐
相关产品推荐

