Entendo que o instrutor tenha o objetivo didático nesse desafio, mas ao parar para refletir o código feito nesta aula, foge da realidade prática, porque apenas com RAND() já é possível receber um valor aleatório de um CPF. Utlizando o seguinte código abaixo, obtenho o mesmo resultado e consigo trabalhar de forma muito mais limpa no retorno das informações.
CREATE DEFINER=`root`@`localhost` FUNCTION `newCliente`() RETURNS varchar(11) CHARSET utf8mb4
BEGIN
DECLARE vCpf VARCHAR(11) DEFAULT '';
SELECT CPF INTO vCpf FROM tabela_de_clientes ORDER BY RAND() LIMIT 1;
RETURN vCpf;
END
Utilizei também essa lógica de ORDER BY RAND() LIMIT 1 para vendedores e consegui finalizar tranquilamente o exercício. Entendo o objetivo de usar todos os comandos para trabalhar uma solução final do curso, porém foi criado um problema grande em cenários simples.