mysql - 如果在mysql中的存储过程中其他
问题描述
大家好,我有点困惑。我只是想问一下这是否是正确的语法。我在其他帖子中尝试了 if else 存储的 proc 查询,但它不起作用。
CREATE PROCEDURE `addBarberCommission`(IN `empID` INT, IN `ioIN` VARCHAR(11))
BEGIN
INSERT INTO `attendance_log` (`emp_id`, `io`) VALUES (`empID`, `ioIN`);
IF (SELECT e.position, e.status, a.io FROM employee e INNER JOIN
attendance_log a WHERE a.emp_id = `empID`
AND e.position = 'Barber'
AND e.status = 'Active'
AND a.io = 'Time In') THEN
INSERT INTO `barber_employee` (`emp_id`, `tot_sal`) VALUES (`empID`, 0);
END IF;
END #
该过程有效,但是当我调用该存储过程时,CALL addBarberCommission(1, 'Time In');
它会产生一个
错误代码:1241。操作数应包含 1 列
我只是要求澄清。谢谢
解决方案
您需要使用EXISTS
:
CREATE PROCEDURE `addBarberCommission`(IN `empID` INT, IN `ioIN` VARCHAR(11))
BEGIN
INSERT INTO `attendance_log` (`emp_id`, `io`) VALUES (`empID`, `ioIN`);
IF EXISTS (SELECT e.position, e.status, a.io --here
FROM employee e
JOIN attendance_log a
WHERE a.emp_id = `empID`
AND e.position = 'Barber'
AND e.status = 'Active'
AND a.io = 'Time In') THEN
INSERT INTO `barber_employee` (`emp_id`, `tot_sal`) VALUES (`empID`, 0);
END IF;
END #
推荐阅读
- php - 对于 zip 文件:此文件通常不被下载。在火狐中
- replace - 使用 Word 查找和替换复制上面的行
- javascript - 使用 Dropzone 和参数发布附加数据
- django - 如何在 django 中使用 Sqlite 创建触发器
- html - Web 抓取:运行时错误 91 未设置对象变量
- c++ - 在 Visual Studio 中使用 GN 未命中断点
- android - 为什么片段可能会在第一次缓慢加载但在随后的任何时间瞬间加载
- powershell - PowerShell 显示菜单
- javascript - Adobe 脚本在 adobe Primer pro 中应用效果时出现奇怪的行为
- delphi - Delphi 服务系统错误代码 8 没有足够的存储空间来处理此命令