0
respostas

Postgresql - erro na função

Gostaria de criar uma função de gerar hospedes no postgresql.. tenho a tabela, hospede, primeironome, segundonome e cidade.

create or replace function geraHospede(pQtde integer, pidadeMin integer, pidadeMax integer) returns integer as
$$
declare 
_nome varchar(100);
_primeiroNome varchar(50);
_segundoNome varchar(50);
_qtde integer:= 0;
_cidade varchar(80);
_idade integer:= 0;
_ano integer:= 0; 
_dia integer:= 0; 
_mes integer:= 0; 
_data date;

begin 
if pidadeMin < pidadeMax and pidadeMin >= 18 and pidadeMax <= 65 then
    for _qtde in 1..10 loop

    select nome into _primeiroNome from primeironome random() limit 1;
    select nome2 into _segundoNome from segundonome random() limit 1;

    _nome:= _primeiroNome || ' ' || _segundoNome;

    select nome into _cidade from cidade random() limit 1;

    select floor(random()*(pidadeMin-pidadeMax+1))+pidadeMax into _idade;
    select date_part('year', date ((to_char (now(), 'dd/mm/yyyy'))) - _idade*365) into _ano

    select floor(random()*(1-28))+28 into _dia;
    select floor(random()*(1-12))+12 into _mes;

    _data:= _dia _mes _ano;

    insert into hospede(nome, cidade, datanascimento) values (_nome, _cidade, _data);

    _qtde:= _qtde + 1;
    end loop;
    return;

else
    raise notice 'Fora do intervalo!!'
end if;
end;
$$ language 'plpgsql';

erro: ERROR: syntax error at or near ")" LINE 20: ... into _primeiroNome from primeironome.nome random() limit 1; ^ SQL state: 42601 Character: 493

Segue acima o código e o erro que estou tendo.

Além disso, como faço pra variável _data receber direitinho em formato de data o _mes, _dia, e _ano?

Alguém poderia me ajudar?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software