Hola
Necesito por favor si me pueden orientar a resolver el error 284, aparentemente es porque esta algún registro duplicado.
Seguí los foros relacionados pero aun sigo sin resolverlo.
Ejecute las querys
select sp_int_arau_datcen(unidad_academica, carrera ,legajo, 2020) from sga_alumnos;
select nro_inscripcion, sp_araunom_datpers(unidad_academica, nro_inscripcion, 2020, to_date('01042020','%d%m%Y'), to_date('31032021','%d%m%Y') from sga_personas;
La primera se ejecuta, la segunda me da error de sintaxis.
Incorpore las instrucciones para generar el debug pero es eterno y lleva días en ejecutarse en una maquina.
SET DEBUG FILE TO “c:\debug_sp.txt”;
TRACE ON;
…
TRACE OFF;
Finalmente fui ejecutando el procedimiento y el problema esta en la siguiente sección de código al querer insertar en la tabla int_araunom_oferta.
-- Archivo 1
FOREACH SELECT t.unidad_academica, int_araunom_alu.tipo_documento, int_araunom_alu.nro_documento, int_araunom_alu.cuil_cuit, t.carrera, t.legajo, t.plan, t.sede_actual, t.nro_inscripcion
INTO vcUa, viTipoDocumento, vcNroDocumento, vcCuit, vcCarrera, vcLegajo, vcPlan, vcSedeActual, vcNroInscripcion
FROM int_araunom_alu,
_temp_alumnos as t
WHERE int_araunom_alu.anio_academico = pAnioAcademico
AND t.tipo_documento = int_araunom_alu.tipo_documento
AND t.nro_documento = int_araunom_alu.nro_documento
-- Cargo la tabla temporal de historia academica "sga_hist_acade_aux" usada por el proceso "sp_int_arau_datequ"
EXECUTE PROCEDURE sp_ac_up_hacad_alu (vcUA, vcCarrera, vcLegajo, NULL);
-- Año de ingreso
EXECUTE PROCEDURE sp_int_arau_dating (vcUA, vcCarrera, vcLegajo) INTO iAnioIngreso;
-- Forma de ingreso en la carrera. S = por Equivalencia / N = Ingreso normal
EXECUTE PROCEDURE sp_int_arau_datequ(vcUA, vcCarrera, vcLegajo, iAnioIngreso) INTO vcFormaIngreso;
-- Recupero la informacion de procedencia
-- EXECUTE PROCEDURE sp_int_arau_datpro (vcUA, vcCarrera, vcLegajo, iAnioIngreso) INTO iProcedencia;
-- Sede en la que se encontraba el alumno en el año academico a inforamr
EXECUTE PROCEDURE sp_int_arau_datsed (vcUA, vcCarrera, vcLegajo, pAnioAcademico) INTO vcSede;
-- Dependencia de ingreso
LET iDepIngreso = NULL;
SELECT NVL(s.instituc_araucano, ua.instituc_araucano) INTO iDepIngreso
FROM sga_carrera_aspira as ca,
sga_sedes as s,
sga_situacion_asp as sa,
sga_unidades_acad as ua
WHERE ca.unidad_academica = vcUA
AND ca.carrera = vcCarrera
AND ca.nro_inscripcion = vcNroInscripcion
AND ua.unidad_academica = vcUA
AND s.sede = ca.sede
AND sa.situacion_asp = ca.situacion_asp
AND (sa.resultado_asp = 'I' OR sa.situacion_asp = 'IC');
-- Inserto los titulos por cada alumno segun el plan actual en el que se encuentra
INSERT INTO int_araunom_oferta (
anio_academico,
tipo_documento,
nro_documento,
cuil_cuit,
titulo,
instituc_araucano,
titulo_araucano,
anio_ingreso,
forma_ingreso,
fecha_egreso,
-- procedencia,
dependenciaingreso,
dependenciaegreso,
unidad_academica,
carrera,
legajo,
plan)
SELECT
pAnioAcademico,
viTipoDocumento,
vcNroDocumento,
vcCuit,
tit.titulo,
NVL(sga_sedes.instituc_araucano, sga_unidades_acad.instituc_araucano) as instituc_araucano,
CAST(tit.titulo_araucano as integer) as titulo_araucano,
iAnioIngreso,
CASE vcFormaIngreso
WHEN 'S' THEN 2 -- Por Equivalencia
WHEN 'N' THEN 1 -- Normal
ELSE 1 -- Normal
END,
CASE
WHEN int_araunom_egres.fecha_egreso IS NOT NULL THEN to_char(int_araunom_egres.fecha_egreso, "%Y%m%d")
ELSE CAST(NULL as varchar(10)) -- No obtuvo el titulo en este año academico.
END as fecha_egreso,
-- iProcedencia,
iDepIngreso,
CAST(NULL as integer) as dependencia_egreso, -- Lo calculo al final luego de generar el archivo de actividades
sga_alumnos.unidad_academica,
sga_alumnos.carrera,
sga_alumnos.legajo,
vcPlan -- sga_alumnos.plan
FROM
sga_alumnos,
_temp_titulos as tit,
sga_unidades_acad,
sga_sedes,
OUTER int_araunom_egres
-- OUTER sga_titulos_otorg
WHERE sga_alumnos.unidad_academica = vcUA
AND sga_alumnos.carrera = vcCarrera
AND sga_alumnos.legajo = vcLegajo
AND sga_sedes.sede = vcSede
AND sga_unidades_acad.unidad_academica = sga_alumnos.unidad_academica
AND tit.unidad_academica = sga_alumnos.unidad_academica
AND tit.carrera = sga_alumnos.carrera
AND tit.plan = vcPlan -- sga_alumnos.plan
AND int_araunom_egres.unidad_academica = sga_alumnos.unidad_academica
AND int_araunom_egres.carrera = sga_alumnos.carrera
AND int_araunom_egres.legajo = sga_alumnos.legajo
AND int_araunom_egres.titulo = tit.titulo;
END FOREACH; -- Alumnos
¿Hay alguna otra manera de depurar este error?
Muchas gracias por la ayuda que nos puedan brindar.
Saludos