multiple rows in singleton select. multiple rows in singleton select. At procedure 'GENERAR_AST' line: 13, col: 5.
Me lo presenta tanto en IBExpert como en delphi, el procedimiento almacenado es el siguiente:
SET TERM ^ ; CREATE OR ALTER PROCEDURE GENERAR_AST ( id_emp INTEGER, fechaini DATE, fechafin DATE) AS DECLARE variable fecha DATE; BEGIN /* Procedure Text */ fecha = fechaini; while (fecha <= fechafin) do BEGIN INSERT INTO asistencia (emp_id,ast_fecha,ast_time1,ast_time2,ast_time3,ast_time4,ca_id) VALUES (:id_emp,:fecha, (SELECT LOG_TIME1 FROM LOG_ASISTENCIA WHERE EMP_ID = :ID_EMP AND LOG_FECHA = :FECHA), (SELECT LOG_TIME2 FROM LOG_ASISTENCIA WHERE EMP_ID = :ID_EMP AND LOG_FECHA = :FECHA), (SELECT LOG_TIME3 FROM LOG_ASISTENCIA WHERE EMP_ID = :ID_EMP AND LOG_FECHA = :FECHA), (SELECT LOG_TIME4 FROM LOG_ASISTENCIA WHERE EMP_ID = :ID_EMP AND LOG_FECHA = :FECHA), CASE WHEN ( (SELECT LOG_TIME1 FROM LOG_ASISTENCIA WHERE EMP_ID = :ID_EMP AND LOG_FECHA = :FECHA) IS NULL ) AND ( (SELECT LOG_TIME2 FROM LOG_ASISTENCIA WHERE EMP_ID = :ID_EMP AND LOG_FECHA = :FECHA) IS NULL ) AND ( (SELECT LOG_TIME3 FROM LOG_ASISTENCIA WHERE EMP_ID = :ID_EMP AND LOG_FECHA = :FECHA) IS NULL ) AND ( (SELECT LOG_TIME4 FROM LOG_ASISTENCIA WHERE EMP_ID = :ID_EMP AND LOG_FECHA = :FECHA) IS NULL ) THEN CASE WHEN ( (SELECT ca_id FROM log_causas WHERE emp_id = :id_emp AND :fecha BETWEEN ca_desde AND ca_hasta) IS NULL ) THEN 5 ELSE (SELECT ca_id FROM log_causas WHERE emp_id = :id_emp AND :fecha BETWEEN ca_desde AND ca_hasta) END WHEN ( NOT (SELECT LOG_TIME1 FROM LOG_ASISTENCIA WHERE EMP_ID = :ID_EMP AND LOG_FECHA = :FECHA) IS NULL ) AND ( (SELECT LOG_TIME2 FROM LOG_ASISTENCIA WHERE EMP_ID = :ID_EMP AND LOG_FECHA = :FECHA) IS NULL) AND ( (SELECT LOG_TIME3 FROM LOG_ASISTENCIA WHERE EMP_ID = :ID_EMP AND LOG_FECHA = :FECHA) IS NULL) AND ( (SELECT LOG_TIME4 FROM LOG_ASISTENCIA WHERE EMP_ID = :ID_EMP AND LOG_FECHA = :FECHA) IS NULL) THEN CASE WHEN ( (SELECT ca_id FROM log_causas WHERE emp_id = :id_emp AND :fecha BETWEEN ca_desde AND ca_hasta) IS NULL ) THEN 6 ELSE (SELECT ca_id FROM log_causas WHERE emp_id = :id_emp AND :fecha BETWEEN ca_desde AND ca_hasta) END WHEN ( NOT (SELECT LOG_TIME1 FROM LOG_ASISTENCIA WHERE EMP_ID = :ID_EMP AND LOG_FECHA = :FECHA) IS NULL ) AND ( NOT (SELECT LOG_TIME2 FROM LOG_ASISTENCIA WHERE EMP_ID = :ID_EMP AND LOG_FECHA = :FECHA) IS NULL ) AND ( NOT (SELECT LOG_TIME3 FROM LOG_ASISTENCIA WHERE EMP_ID = :ID_EMP AND LOG_FECHA = :FECHA) IS NULL ) AND ( NOT (SELECT LOG_TIME4 FROM LOG_ASISTENCIA WHERE EMP_ID = :ID_EMP AND LOG_FECHA = :FECHA) IS NULL ) THEN NULL END ); fecha = fecha + 1; END suspend; END^ SET TERM ; ^ GRANT INSERT ON ASISTENCIA TO PROCEDURE GENERAR_AST; GRANT SELECT ON LOG_ASISTENCIA TO PROCEDURE GENERAR_AST; GRANT SELECT ON LOG_CAUSAS TO PROCEDURE GENERAR_AST; GRANT EXECUTE ON PROCEDURE GENERAR_AST TO SYSDBA;
Quiero saber cual es la causante de eso si funcionaba perfectamente?. Espero su ayuda.
Saludos.