在做本地搭建或者客户环境对接时,很多人会遇到注册模块报错:
数据库异常:形参 @strCompellation 未声明为 OUTPUT 参数,但传递进来的实参请求输出。
从图里可以看到,登录服务器在初始化组件时就会提示这一行红字,这其实就是 SQL 存储过程定义和实际调用时形参设置对不上。
登录服务后台报错截图
为什么会出现?
这个参数 @strCompellation
一般是注册信息里的“真实姓名”字段,部分平台会把它做成可选输出。如果在写 注册账号.sql
这个存储过程时少了 OUTPUT
,服务端调用时就会找不到定义,就挂了。
怎么修复?
最直接:
找到你数据库脚本里专门负责注册的脚本文件,一般路径是:
\存储过程 \ 用户数据库 \ 注册帐号.sql
用记事本或 SQL Server Management Studio 打开,找到这一段:
@strCompellation NVARCHAR(16),
把它改成:
@strCompellation NVARCHAR(16) OUTPUT,
多出来的 OUTPUT
就是关键。
对比图,未加 vs 已加 OUTPUT
改完还要做什么?
别只改完脚本就关了,一定要重新执行。
切换到对应用户数据库(比如 QPAccountsDB
),把修改好的 .sql
整段复制进查询窗口,然后点“执行”,或者直接按 F5。
执行成功后重启登录服务器,新的过程才会生效。
如果有多个环境,最好把这条改好的脚本一起放到版本库里,别下次上线又掉坑。
实测小提示
这类形参问题只要是 OUTPUT 没对齐,后面都会伴随类似 “未找到输出” 报错。以后只要一看到带 OUTPUT
字样的提示,大概率就是存储过程里少了、或调用传参写错。
转载请注明出处,保留作者信息,感谢支持!