Cuándo usar una función o un proceso

Cada objeto tiene sus virtudes y también sus limitaciones. Conocerlas nos ayuda a decidir cuando usar uno u otro.

 

Las funciones

Ventajas

  • Permiten el paso sencillo de parámetros.
  • Pueden ser ejecutadas desde cualquier fórmula.
  • Se pueden ejecutar en contenidos iniciales de campos.
  • Se pueden ejecutar en condiciones de controles.
  • Se pueden ejecutar como funciones remotas entre servidores o entre instancias del mismo servidor.
  • Solo requieren una línea de código para su ejecución.
  • Al no tener un origen se pueden usar de forma abstracta para cualquier tabla.
  • Producen un retorno no asociado a ningún origen.
  • Pueden ser ejecutadas en cualquier plano.

Limitaciones

  • Solo admiten 10 parámetros.
  • Los parámetros deben estar en el orden de definición.
  • No es posible usar parámetros opcionales, salvo el último.
  • No tienen origen y no se les pueden pasar registros o listas.
  • Solo pueden tener un retorno.
  • Si se ejecutan en 1º plano producen una transacción independiente.
  • No se pueden lanzar en un plano diferente al del lanzador.

Procesos

Ventajas

  • Se les puede pasar un origen de datos, ficha o lista.
  • Pueden retornar un origen de datos, ficha o lista.
  • Ejecutados con un manejador de objeto permite el paso ilimitado de parámetros y la recepción ilimitada de parámetros.
  • En algunas circunstancias se pueden ejecutar en planos diferentes al del lanzador.

Limitaciones

  • No es posible ejecutarlos desde una fórmula.
  • Solo pueden tener un origen.
  • Solo pueden tener un destino.
  • Si tienen origen hay que crear uno para cada tabla.
  • Si es necesario usar manejador de objeto requieren múltiples líneas de código.

¿Cómo elegir?

Estos pasos te pueden ayudar a tomar la decisión de cuál usar según la programación que vayas a realizar.

Usaré un proceso si necesito…

  • Pasarle el registro o lista en la que estoy.
  • Que me retorne un registro o lista.
  • Pasarle más o menos parámetros en diferentes circunstancias.
  • Lanzarlo en el servidor cuando estoy en el cliente.

Usaré una función si necesito…

  • Ejecutarla para múltiples tablas.
  • Ejecutarla en el contenido inicial de un campo.
  • Ejecutar una funcionalidad de forma remota entre servidores o instancias.
  • Que genere una transacción independiente en 1º plano cuando ya tengo una transacción en curso.

¿Te animas a aportar más a este post?

Deja un comentario con tus ideas y buenas prácticas.

Scroll al inicio