Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
存储过程MySql_Mysql - Fatal编程技术网

存储过程MySql

存储过程MySql,mysql,Mysql,我只想问一下我的存储过程是否正确。我有三张表:雇员、出勤记录和理发师雇员。在存储过程中,当员工进入时,当该员工是理发师时,它将在barber employee中插入一个新数据。这个过程执行得很好,但是当我调用存储过程时,即使员工是出纳也会添加到barber_员工中 存储过程查询 DELIMITER # CREATE PROCEDURE addLogs(IN empID INT, IN ioIN VARCHAR(11)) BEGIN INSERT INTO attendance_log (emp_

我只想问一下我的存储过程是否正确。我有三张表:雇员、出勤记录和理发师雇员。在存储过程中,当员工进入时,当该员工是理发师时,它将在barber employee中插入一个新数据。这个过程执行得很好,但是当我调用存储过程时,即使员工是出纳也会添加到barber_员工中

存储过程查询

DELIMITER #
CREATE PROCEDURE addLogs(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 
           FROM employee e 
           JOIN  attendance_log a 
           WHERE a.emp_id = `empID`
             AND e.position = 'Barber'
             AND a.io = 'Time In') THEN
  INSERT INTO barber_employee (emp_id, salary, salary_date) VALUES (empID, 0, NOW());
END IF;
END #
DELIMITER ;
员工表

考勤记录表

barber_员工表


注意:salary_date和log_time是时间戳

我不确定,但我认为EXISTS只能在WHERE子句中使用。您可以尝试将SELECT提取到一个局部变量中,然后在IF语句中使用该变量吗?实际上,我甚至无法编译此过程-2原因对于分隔符来说不是一个好的选择,它表示mysql中的注释,其次插入的“salary_date”被引用,而不是反勾。另外,给参数起与列名相同的名字是不可行的,e.status从哪里来?@P.Salmon我错误地引用了salary\u日期。我编辑存储过程查询