mysql - 在 MySql 中创建过程时错误使用 UNION 和 INTO

标签 mysql procedure

创建过程时发生以下错误:

Error Code: 1221. Incorrect usage of UNION and INTO

我的程序是:

    SET sql_mode=ORACLE;
    DELIMITER $$
    CREATE PROCEDURE MARK_ATTENDANCE (IN EmployeeId INTEGER) 
    BEGIN
       DECLARE EmpShift INTEGER(10);
       DECLARE EmpMarkLoc INTEGER(10);
       SET EmpShift = 0;
       SET EmpMarkLoc = 0;

       SELECT ed.default_shift, sl.location_id INTO EmpShift,EmpMarkLoc
       FROM EMPLOYEE ed
       LEFT JOIN sublocation sl
       ON sl.sublocation_id = ed.sub_location_id
       UNION ALL
       SELECT ed.default_shift, sl.location_id 
       FROM EMPLOYEE ed
       RIGHT JOIN sublocation sl
       ON sl.sublocation_id = ed.sub_location_id
       WHERE sl.sublocation_id IS NULL
       AND emp_id = EmployeeId;
    END ;
    $$
    DELIMITER ;

实际上,我想要一个 FULL OUTER JOIN,最终选择了 UNION ALL,并尝试将输出存储在 EmpShiftEmpMarkLoc 等变量中以供进一步使用。

最佳答案

SELECT @EmpShift:=ed.default_shift,  @EmpMarkLoc:=sl.location_id

上面使用来代替

SELECT ed.default_shift, sl.location_id INTO EmpShift,EmpMarkLoc

关于mysql - 在 MySql 中创建过程时错误使用 UNION 和 INTO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57336351/

相关文章:

mysql - 使用过程 MySQL 创建 View 时出错

mysql - 将文本值与 LEFT JOIN 合并在一列中,并用预定义的措辞替换 NULL

mysql - 我正在尝试使用 join with update 查询但找不到问题

PHP - 在 INSERT INTO MySQL 语句中使用变量作为列名的一部分

MYSQL 创建函数 - 获取 : Not allowed to return a result set from a function

mysql - 在 MySQL 过程中添加用于编号的新列

mysql - 在 CakePHP 中使用事件-> 计划-> 开始和结束日期之间的日期选择所有事件

mysql - SQL 插入数据类型数字插入溢出错误

mysql - 如何使用 Mysql 过程和 Date() 创建存档表

java - 如何在 h2 中创建包别名