我开发了一个匿名的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
);