Ir para o conteúdo principal

Procedure - Primeira letra da palavra com letra maiúscula (Initcap)

SQL: 

create or alter procedure INITCAP (ENTRADA varchar(4000)) returns (SAIDA varchar(4000)) as
  declare variable LI_TAMANHO integer;
  declare variable I integer;
begin
  I = 1;
  LI_TAMANHO = char_length(:ENTRADA);
  ENTRADA = lower(ENTRADA);

  while (I <= LI_TAMANHO) do
  begin
    if (I = 1) then
    begin
      SAIDA = upper(substring(ENTRADA from I for 1)) || substring(ENTRADA from I + 1 for LI_TAMANHO);
    end
    else
    begin
      if (substring(ENTRADA from I for 1) = ' ') then
      begin
        SAIDA = substring(SAIDA from 1 for I) || upper(substring(ENTRADA from I + 1 for 1)) || substring(ENTRADA from I + 2 for LI_TAMANHO);
      end
    end
    I = I + 1;
  end
  suspend;
end;

Chamada da procedure: 

select * from INITCAP('nome sobrenome')

Retorno: 

Nome Sobrenome