BULK COLLECT SELECT上的“不是GROUP BY表达式”

时间:2017-08-10 23:06:35

标签: sql plsql plsqldeveloper

我开发了一个匿名的PL / SQL块,列出了一周中每天雇用的员工总数。然后将结果插入表中。为了优化流程并避免PL / SQL引擎和SQL引擎之间重复的上下文更改,我使用了BULK COLLECT AND FORALL实用程序。

DECLARE 

    TYPE R_EMLEADOS_DIAS_SEMANA IS RECORD(
        totalEmpleados INTEGER,
        dayOfWeek VARCHAR2(10)
    );

    TYPE t_empleados IS TABLE OF R_EMLEADOS_DIAS_SEMANA;

    v_empleados t_empleados;
BEGIN

    SELECT COUNT(*) AS TOTAL , TO_CHAR(HIRE_DATE,'DAY') AS DAY_OF_WEEK
    BULK COLLECT INTO v_empleados
    FROM EMPLOYEES GROUP BY TO_CHAR(HIRE_DATE,'DAY');

    FORALL v_index IN 1 .. v_empleados.COUNT SAVE EXCEPTIONS
        INSERT INTO EJERCICIOS (EJERCICIO, VALOR_1, VALOR_2)
        VALUES (2, v_empleados(v_index).totalEmpleados, v_empleados(v_index).totalEmpleados || ' EMPLEADOS DADOS DE ALTA EL ' || v_empleados(v_index).dayOfWeek);
    COMMIT WORK;
    EXCEPTION
       WHEN OTHERS THEN
            IF SQLCODE = -24381 THEN
                FOR v_index IN 1 .. SQL%BULK_EXCEPTIONS.COUNT LOOP
                    DBMS_OUTPUT.PUT_LINE (
                          SQL%BULK_EXCEPTIONS (v_index).ERROR_INDEX
                           || ':'
                           || SQL%BULK_EXCEPTIONS (v_index).ERROR_CODE);
                END LOOP;
            ELSE
                RAISE;
            END IF;
END;
/

当我运行此块时,我收到以下编译错误:

ORA-00979: Is not a GROUP BY expression
ORA-06512: en línea 31
ORA-06512: en línea 13
00979. 00000 -  "not a GROUP BY expression"

我不明白为什么查询不起作用。如果我正常运行它可以很好地工作。

任何人都知道如何修复它?提前谢谢。

用于练习的表格:

CREATE TABLE EJERCICIOS (
  EJERCICIO NUMBER(3) NOT NULL,
  VALOR_1   NUMBER(4) NOT NULL,
  VALOR_2   VARCHAR2(100) NOT NULL
);

0 个答案:

没有答案