2015-02-21 10:30 GMT-02:00 Matheus Saraiva <[email protected]>:
> Pensando na modularização, eu acho estranho repassar esse valor para cada
> Filho sendo que você já está passando a informação do genitor nos outros
> parâmetros.
>
> Aproveitando o mesmo email, como ficaria a sintaxe se já existisse uma
> função para inserir filhos e eu queira chamar essa função ao invés de fazer
> um INSERT em Filhos? Como eu passaria o resultado de *SELECT * FROM
> unnest(f_filhos);* para a função *funcInsertFilhos*?
>
>
>
> Sim eu poderia, pegar o id do cliente que acabou de ser cadastrado e
> inserir no campo genitor de cada filho. Minha ideia era deixar isso a cargo
> da aplicação, pois não sei como eu faria isso em plpgsql. O que eu teria
> que fazer? Modificar o vetor de filhos?
>
>
Basta passar o valor separado:
INSERT INTO Filhos(genitor, ...)
SELECT variavel_com_cliente, * FROM unnest(array_filhos);
Simplesmente:
>
>
> SELECT funcInsertFilhos(u) FROM unnest(f_filhos) u;
>
>
>
> O que seria o u, uma variável, um alias? Em que parte da documentação
> encontro isso?
Um "alias" ou apelido, é o que defini na cláusula FROM, o importante é que
seja o mesmo, mas pode ser qualquer identificador:
SELECT funcInsertFilhos(foo_bar_baz) FROM unnest(f_filhos) AS
foo_bar_baz;
Veja que a palavra-chave "AS" é opcional, eu gosto por deixar mais claro
(não sei porque não usei anteriormente, não é meu costume).
Atenciosamente,
--
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral