Diferencia entre revisiones de «Devolver información de una funcion»

De WikiDgp21
Saltar a: navegación, buscar
(Página nueva: Para ello hemos de definit la función para que nos devuelve un tipo result. Este tipo tiene 3 componentes: *Estado: Habitualmente **0: Todo ha ido bien. **9: Error *Código del erro...)
 
(Sin diferencias)

Revisión actual del 11:02 11 mar 2009

Para ello hemos de definit la función para que nos devuelve un tipo result. Este tipo tiene 3 componentes:

  • Estado: Habitualmente
    • 0: Todo ha ido bien.
    • 9: Error
  • Código del error: Corresponderá a un código de mensaje que introduciremos previamente.
  • Información adicional: Información adicional relativa a los datos que han generado el error que le sirva al usuario para corregir el error.


Prototipo de función a utilizar

 CREATE FUNCTION f_contabf (codfac numeric, arg character) RETURNS result AS $_$
 DECLARE
 ...
 BEGIN
    res.stat = 0;
    res.cod = ;
    res.text = ;
    ...
 -- Genera error
 if fechacp >= fecha then
    res.stat = 9;
    res.cod = 'f_contcp'; --> Código del mensaje a mostrar por la aplicación
    res.text = fecha;
    return res;
 end if;
 ...
 END;
 $_$
 LANGUAGE plpgsql;

Pantalla: dgg0450.0, (Facturas de ventas ), crtrl. 11 (guardar)

Programación:

   stat numeric(2,0)@1;
   ...
   result numeric(2,0)@148;
   ...
   exef(22); //genera los apuntes contables
   if ((result > 0) | (stat > 0)) //si hay error en la función
   {
        exef(23); //mensaje error
        exef(16); //rollback
        exit 0;
   }


Función 22

Invoca la función que devuelve tipo result

 g_rellena, parámetros: 1,0,n
    Sql: select * from f_contabf(#118,'i')
    Pares: 001148,002149,003150

Campos para recoger el resultado de la función:

    148: Status, Numérico 2 dígitos
    149: Código error, alfanumérico, 10 dígitos
    150: Información adicional, alfanumérico, 40 dígitos

Función 23

Mensaje de error

    g_mens, parámetros: msg0008 ,#149,,150