1
resposta

Erro 1264

Olá, pessoal, por que está dando esse erro na chamada da function abaixo:

CREATE DEFINER=`root`@`localhost` FUNCTION `f_cliente_aleatorio`() RETURNS int(11)
BEGIN
    declare vResultado int;
    declare max_result int;
    declare random_number int;

    SELECT count(*) into max_result FROM sucos_vendas.tabela_de_clientes;
    set random_number = rand_int(1,max_result);
    set random_number = random_number - 1;

    SELECT CPF INTO vResultado FROM sucos_vendas.tabela_de_clientes limit random_number,1;

RETURN vResultado;
END
1 resposta

Olá Camilla, tudo bem?

Um erro é retornado ao executar a sua function, pois, o RETURNS e o tipo da variável vResultado é diferente do valor que será retornado.

O campo CPF na tabela de clientes é um varchar(11), o RETURNS e a variável vResultado está sendo declarada na função como int.

Tente executar a sua function da seguinte forma:

CREATE DEFINER=`root`@`localhost` FUNCTION `f_cliente_aleatorio`() RETURNS varchar(11)
BEGIN

    declare vResultado varchar(11);
    declare max_result int;
    declare random_number int;

    SELECT count(*) into max_result FROM sucos_vendas.tabela_de_clientes;
    set random_number = rand_int(1,max_result);
    set random_number = random_number - 1;

    SELECT CPF INTO vResultado FROM sucos_vendas.tabela_de_clientes limit random_number,1;

RETURN vResultado;
END

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!