Hola:
Ejecuto: toba proyecto migrar_base -p guarani -i desarrollo
y me tira el siguiente error:
Ejecutando: pg_dump -Ox --inserts -n negocio_auditoria -h localhost -U
postgres -p 5432 -f “D:\Apache\www\Toba/proyectos/guarani/BD/datos_auditoria_3.
5.0.sql”
guarani_3
pg_dump: No se encontraron esquemas coincidentes
Migrando la base de la versión 3.5.0 hasta la versión 3.6.0
Actualizando BD de negocios a version 3.6.0
Ejecutando Archivo: 000331.sql
. Ejecutando Archivo: 000332.sql
. Ejecutando Archivo: 000333.sql
. Ejecutando Archivo: 000334.sql
. Ejecutando Archivo: 000335.sql
ERROR ejecutando SQL:
[CODIGO]: 7
[SQLSTATE]: db_42883
[MENSAJE]: ERROR: no existe la función f_copiar_comision(integer, integer,
integer, character varying, boolean, boolean, boolean, character)
[SQL EJECUTADA]: – +++++++++++++++++++++++++++++++++++++++
– Script de conversión 000335.sql
– +++++++++++++++++++++++++++++++++++++++
– BEGIN WORK;
– +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
– SIU-GUARANI 3
– Version 3.0.0
– Function: f_copiar_comision
– Copia una comision en en un nuevo periodo lectivo.
– * Datos de la comision, docentes, instancias, propuestas y planes
– * Subcomisiones
– * Si es copia de comisiones de una actividad a otra en el mismo período
lectivo entonces comparte las comisiones
– y copia las excepciones de periodos de inscripcion si lo tiene la
comision origen.
– Recibe:
– 1. ID de la comision origen
– 2. ID de la actividad destino. Default NULL (Si es null se trata
de la
misma actividad de la comision origen)
– 3. ID del período lectivo destino.
– 4. Nombre de la nueva comision. Default valor NULL
– 5. Parámetro que indica si se copian o no las subcomisiones.
– Valor: true - Se copian las subcomisiones (default) / false - No se
copian las subcomisiones
– 6. Parámetro que indica si se copian o no los docentes.
– Valor: true - Se copian los docentes de la cmision y subcomisiones
(default) / false - No se copian los docentes
– 7. Parámetro que indica si se copian o no las Bandas Horarias.
– Valor: true - Se copian las bandas horarias de la comision y
subcomisoines (default) / false - No se copian las bandas horarias
– 8. Valor del parámetro “asist_computa_inasist_por_horas”
–
– Retorna:
– 1. un registro con los datos del tipo: type_comision
– +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DROP FUNCTION f_copiar_comision(integer, integer, integer, varchar, boolean,
boolean, boolean, char);
CREATE OR REPLACE FUNCTION f_copiar_comision(
pComisionOrigen integer,
pActividadDestino integer,
pPeriodoLectivoDestino integer,
pComisionNombre varchar(100),
pCopiarSubcomisiones boolean,
pCopiarDocentes boolean,
pCopiarBandasHorarias boolean,
pAsistenciaPorHoras char(1))
RETURNS SETOF type_comision_copiado_generacion AS
$BODY$
DECLARE
comision_nueva INTEGER;
_periodo_lectivo_destino Integer;
_periodo_lectivo_origen Integer;
_nombre_comision VARCHAR(100);
subcomision_origen INTEGER;
subcomision_nueva INTEGER;
_observaciones text;
_division integer;
_catedra integer;
_estado_catedra char(1);
_nombre_catedra varchar(100);
_fecha_desde DATE;
_fecha_hasta DATE;
_fecha_desde_doc DATE;
_fecha_hasta_doc DATE;
_insc_habilitada char(1);
_insc_habilitada_orig char(1);
_elemento integer;
_ubicacion_destino integer;
_ActividadOrigen Integer;
cnt SMALLINT;
_actividad text;
cur_subc record;
cur_docentes record;
cur_retorno type_comision_copiado_generacion; – para retornar datos de la
comision creada
BEGIN
cur_retorno.codigo_retorno := 0; – OK. COMISION COPIADA
_observaciones := NULL;
_insc_habilitada := ‘S’;
– Recupero datos de la comision origen.
SELECT ‘(’ || sga_elementos.codigo || ') ’ || sga_elementos.nombre,
sga_comisiones.nombre,
sga_comisiones.elemento,
sga_comisiones.periodo_lectivo,
sga_comisiones.inscripcion_habilitada,
sga_comisiones.division,
sga_comisiones.ubicacion,
sga_comisiones.catedra,
sga_catedras.nombre,
sga_catedras.estado,
sga_periodos_lectivos.fecha_inicio_dictado,
sga_periodos_lectivos.fecha_fin_dictado
INTO _actividad,
_nombre_comision,
_elemento,
_periodo_lectivo_origen,
_insc_habilitada_orig,
_division,
_ubicacion_destino,
_catedra, _nombre_catedra, _estado_catedra,
_fecha_desde, _fecha_hasta
FROM sga_comisiones
LEFT JOIN sga_catedras ON sga_catedras.catedra =
sga_comisiones.catedra,
sga_elementos,
sga_periodos_lectivos
WHERE sga_elementos.elemento = sga_comisiones.elemento
AND sga_comisiones.comision = pComisionOrigen
AND sga_periodos_lectivos.periodo_lectivo =
sga_comisiones.periodo_lectivo;
IF NOT FOUND THEN
– Salgo.
cur_retorno.codigo_retorno := 1; – Comision no copiada
cur_retorno.observaciones := ‘La comisión a copiar no existe’;
RETURN NEXT cur_retorno;
RETURN; – Salgo
END IF;
_ActividadOrigen := _elemento;
_fecha_desde_doc := _fecha_desde;
_fecha_hasta_doc := _fecha_hasta;
–
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
– Esto es para el caso que se duplica una comision del mismo período
lectivo.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
IF pComisionNombre IS NOT NULL THEN
– Se pasa un nuevo nombre de Comision.
_nombre_comision := pComisionNombre;
END IF;
IF pPeriodoLectivoDestino IS NULL THEN
– Se asigna el mismo periodo lectivo que la comision original
_periodo_lectivo_destino := _periodo_lectivo_origen;
-- Para que copie la fecha desde y hasta de los docentes de la comision
origen
_fecha_desde_doc := NULL;
_fecha_hasta_doc := NULL;
_insc_habilitada := NULL;
ELSE
_periodo_lectivo_destino := pPeriodoLectivoDestino;
END IF;
IF pActividadDestino IS NOT NULL THEN
– Puede ser que a la actividad donde se generará la comision es otra
actividad
_elemento := pActividadDestino;
END IF;
– Verifico que no exista una comision con el mismo nombre para la
actividad, periodo lectivo y ubicacion destino.
SELECT Count(*) INTO cnt
FROM sga_comisiones
WHERE elemento = _elemento
AND periodo_lectivo = _periodo_lectivo_destino
AND ubicacion = _ubicacion_destino
AND nombre = _nombre_comision;
IF cnt > 0 THEN
– Salgo.
cur_retorno.codigo_retorno := 1; – Comision no copiada
cur_retorno.observaciones := ‘La comisión ’ || _nombre_comision || ’ no
se copió porque ya existe en el período lectivo y ubicación destino’;
RETURN NEXT cur_retorno;
RETURN;
END IF;
– Verifico si la catedra esta activa
IF _catedra IS NOT NULL AND _estado_catedra <> ‘A’ THEN
cur_retorno.codigo_retorno := 1; – Comision no copiada
cur_retorno.observaciones := ‘La cátedra ’ || _nombre_catedra || ’ de la
comisión esta dada de baja’;
RETURN NEXT cur_retorno;
RETURN;
END IF;
– ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
– Inserto la comision
– ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
INSERT INTO sga_comisiones (nombre, periodo_lectivo, elemento, turno,
catedra, ubicacion, letra_desde, letra_hasta, cupo, inscripcion_habilitada, div
ision,
asistencia_por_horas)
SELECT _nombre_comision, _periodo_lectivo_destino, _elemento, turno,
_catedra, ubicacion, letra_desde, letra_hasta, cupo, COALESCE(_insc_habilitada,
_insc_habilitada_orig), _division,
CASE
WHEN pAsistenciaPorHoras IS NOT NULL THEN pAsistenciaPorHoras
ELSE asistencia_por_horas
END
FROM sga_comisiones
WHERE comision = pComisionOrigen;
– Recupero el Serial de la comision
comision_nueva := (SELECT currval(‘sga_comisiones_seq’));
– Seteo valores para retorno
cur_retorno.comision := comision_nueva;
cur_retorno.nombre_comision := _nombre_comision;
– Modalidad de Cursada.
INSERT INTO sga_comisiones_modalidad (comision, modalidad)
SELECT comision_nueva, modalidad
FROM sga_comisiones_modalidad
WHERE comision = pComisionOrigen;
– Propuestas y Planes de la comision
IF pActividadDestino IS NULL OR _elemento = pActividadDestino THEN
IF pPeriodoLectivoDestino = _periodo_lectivo_origen THEN
– Esta duplicando una comision de la misma actividad en el mismo
periodo lectivo
INSERT INTO sga_comisiones_propuestas (comision, propuesta, plan)
SELECT comision_nueva, propuesta, plan
FROM sga_comisiones_propuestas
WHERE comision = pComisionOrigen;
ELSE
– Esta copiando comisiones de un período lectivo a otro. Solo asignar
planes de estudios activos (vigentes o no vigentes)
INSERT INTO sga_comisiones_propuestas (comision, propuesta, plan)
SELECT DISTINCT comision_nueva, cp.propuesta, cp.plan
FROM sga_comisiones_propuestas as cp,
sga_planes as p,
sga_planes_versiones as v
WHERE cp.comision = pComisionOrigen
AND p.plan = cp.plan
AND v.plan = cp.plan
AND p.estado IN (‘A’, ‘V’)
AND v.estado IN (‘A’, ‘V’);
END IF;
ELSE
– La actividad destino no es la misma que la actividad de la comision
origen
– Inserto propuestas y planes (activos) en los que se encuentra la
actividad destino
INSERT INTO sga_comisiones_propuestas (comision, propuesta, plan)
SELECT DISTINCT comision_nueva, propuesta, plan
FROM vw_actividades_plan as vw,
sga_planes as p,
sga_planes_versiones as v
WHERE vw.elemento = _elemento
AND p.plan = vw.plan
AND v.plan = vw.plan
AND p.estado IN (‘A’, ‘V’)
AND v.estado IN (‘A’, ‘V’);
END IF;
– Instancias de la comision
INSERT INTO sga_comisiones_instancias (comision, instancia, escala_nota,
porc_asistencia)
SELECT comision_nueva, instancia, escala_nota, porc_asistencia
FROM sga_comisiones_instancias
WHERE comision = pComisionOrigen;
– Docentes de la comision
IF pCopiarDocentes THEN
FOR cur_docentes IN SELECT sga_docentes_comision.docente,
sga_docentes_comision.responsabilidad,
sga_docentes_comision.fecha_desde,
sga_docentes_comision.f
… CORTADO POR EXCEDER EL LIMITE
TIEMPO: 42,166 segundos
Alguna solucion?
Muchas gracias!!!