编写接收STORE CODE与EMPLOYEE CODE的存储过程校验员工所属门店
SQL存储过程校验员工所属门店修复方案
原有代码错误原因
- 核心逻辑错误:原代码将员工编码变量
@emp与门店编码变量@store直接做等值判断,两个字段属于完全不同的业务维度,天然不可能相等,这就是测试返回错误结果的直接原因 - 关联逻辑缺失:单独查询门店编码、员工编码的写法没有建立「员工-所属门店」的对应关系,完全达不到校验归属的目的
- 未处理边界异常:如果输入的员工编码或门店编码不存在,对应的变量会被赋值为NULL,后续判断逻辑会执行异常
修复后的存储过程代码
CREATE OR ALTER PROCEDURE EmployeeVerify @STORE_CODE int, @EMP_CODE int AS BEGIN -- 直接校验是否存在该员工属于对应门店的记录 IF EXISTS ( SELECT 1 FROM EMPLOYEE WHERE EMP_CODE = @EMP_CODE AND STORE_CODE = @STORE_CODE ) BEGIN PRINT 'EMPLOYEE WORKS AT THIS STORE' END ELSE BEGIN PRINT 'EMPLOYEE DOES NOT WORK AT THIS STORE' END END
代码说明
- 用
EXISTS关键字做存在性判断,只要表中存在同时匹配员工编码、门店编码的记录就判定归属匹配,逻辑更直观高效 - 不需要声明额外中间变量,减少冗余代码的同时避免了NULL值带来的判断异常
- 自动覆盖入参不存在的场景:只要输入的员工编码或门店编码不存在,也会返回不匹配提示,符合业务校验要求
内容的提问来源于stack exchange,提问作者NAR
相关产品推荐
相关产品推荐

