Falla SP de precontroles al migrar actas

Hola:

Estamos tratando de migrar actas de cursada/promoción por sistemas externos a Guarani 3.14

Notamos que si no cargamos ni los campos folio ni folio_fisico (Lo cuales pueden ser nulos según la doc) el script de precontroles prctrl_actas falla con un error de postgres al tratar de ejecutar la función ext.sp_ctrl_actas() que dice:

ERROR:  el operador no es único: unknown - unknown
LINE 1: ...ro_libro, folio_fisico, COUNT(DISTINCT origen || '-' || nro_...
                                                             ^
HINT:  No se pudo escoger el operador más adecuado. Puede ser necesario agregar conversiones explícitas de tipos.
QUERY:  SELECT 'SELECT nro_libro, folio_fisico, COUNT(DISTINCT origen || '-' || nro_acta)
				FROM ext.mig_acta_cursada_promocion 
				GROUP BY 1, 2 
				HAVING COUNT (DISTINCT origen || '-' || nro_acta) > 1 '
CONTEXT:  PL/pgSQL function "sp_ctrl_actas" line 138 at asignación

Esto no sucede cuando están los campos de folio y folio_fisico presentes. Pero en nuestro caso no los podemos poner

Alguna pista al respecto??

Gracias y saludos

Federico

Por el error, en el archivo \02_Modulos\08_Actas\01_Pre_Controles\fx_prectrl_actas.sql donde dice (linea 144):

sql='SELECT nro_libro, folio_fisico, COUNT(DISTINCT origen || '-' || nro_acta)
				FROM ext.mig_acta_cursada_promocion 
				GROUP BY 1, 2 
				HAVING COUNT (DISTINCT origen || '-' || nro_acta) > 1 ';

Reemplazalo por:

sql='SELECT nro_libro, folio_fisico, COUNT(DISTINCT origen || ''-'' || nro_acta)
				FROM ext.mig_acta_cursada_promocion 
				GROUP BY 1, 2 
				HAVING COUNT (DISTINCT origen || ''-'' || nro_acta) > 1 ';

Debe ir doble comilla simple en || ‘’-‘’ ||

Hola Alejandro:

Hice el cambio, puse comillas simples dos veces, pero sigue dando el error:

ERROR:  el operador no es único: unknown - unknown
LINE 1: ...o_libro, folio_fisico, COUNT(DISTINCT origen || ''-'' || nro...
                                                             ^
HINT:  No se pudo escoger el operador más adecuado. Puede ser necesario agregar conversiones explícitas de tipos.
QUERY:  SELECT EXISTS (SELECT nro_libro, folio_fisico, COUNT(DISTINCT origen || ''-'' || nro_acta)
				FROM ext.mig_acta_cursada_promocion 
				GROUP BY 1, 2 HAVING COUNT (DISTINCT origen || ''-'' || nro_acta) > 1)
CONTEXT:  PL/pgSQL function "sp_ctrl_actas" line 135 at IF

********** Error **********

ERROR: el operador no es único: unknown - unknown
Estado SQL:42725
Sugerencias:No se pudo escoger el operador más adecuado. Puede ser necesario agregar conversiones explícitas de tipos.
Contexto:PL/pgSQL function "sp_ctrl_actas" line 135 at IF

Alejandro:

Ignorá este último error. Por error reemplacé la comillas tanto en el IF como en la variable sql. Había que poner doble comillas simples solo en la línea que empieza por “sql=”

Justamente este precontrol se ejecuta con el error: “Existen nros de libros de actas y folios fisicos que se repiten en diferentes actas de Cursada/Promocion, verifique!!”

Y es lógico que aparezca más de un libro con el mismo folio, porque el folio no se llenó, está en NULL

Sin embargo el schema de la tabla mig_acta_cursada_promocion permite nulos en los campos folio y folio_fisico

Está bien este precontrol cuando no se llenan los campos folio y folio_fisico??

Falta agregar la condición:

WHERE folio_fisico IS NOT NULL