Procedure : Primeira letra maíuscula

A baixo segue código fonte da procedure que recebe um texto de até 100 caracteres e retorna o mesmo porém com a primeira letra maiúscula e as demais minúsculas.

CREATE PROCEDURE PRIMEIRALETRAMAISCULA (PSTRING VARCHAR(100))
RETURNS (RESULTADO VARCHAR(100))
AS BEGIN
	
	 with recursive r as (
  select
    substring(a.nome from 1 for 1) letra,
    substring(a.nome from 2) restante,
    iif(substring(a.nome from 1 for 1) = ' ','S','N') ToUpper
  from (
    select
      lower(' '||cast(:PSTRING as varchar(100))) nome
    from rdb$database) a

  union all

  select
    iif(r.toUpper = 'S',upper(substring(r.restante from 1 for 1)),substring(r.restante from 1 for 1)),
    substring(r.restante from 2),
    iif(substring(r.restante from 1 for 1) = ' ','S','N') ToUpper
  from r
  where r.restante <> '') select trim(list(r.letra, '')) from r INTO RESULTADO;
 
 SUSPEND;
	 
 END

Como chamar essa procedure ?

Para chamar essa procedure, use o seguinte código:

 SELECT * FROM PRIMEIRALETRAMAISCULA('TEXTO TESTE');

Observe como fica o resultado após execução.