CREATE OR ALTER FUNCTION FN_ELIPSES (
    TEXTO VARCHAR(8000),
    CARACTERES_MAXIMO INTEGER = 30)
RETURNS VARCHAR(8000)
AS
DECLARE VARIABLE TAMANHO INTEGER;
DECLARE VARIABLE TEXTO_CORTADO VARCHAR(8000);
begin

  TAMANHO = CHAR_LENGTH(TEXTO);
  TEXTO_CORTADO = TRIM(SUBSTRING(TEXTO FROM 1 FOR CARACTERES_MAXIMO-3));

  IF ( TAMANHO > CARACTERES_MAXIMO ) THEN
  BEGIN
    TEXTO = TEXTO_CORTADO || '...';
  END
  /* Function Text */
  return TEXTO;
end;