Parece estar faltando detalhes no seu código.
Mas vou tentar adivinhar o q vc queria..

Vc nao vai poder fazer "insert () select" em pessoas.
vc vai ter q percorrer o array manualmente e, dentro do loop, inserir em
pessoa e armazenar os valores da sequence em outro array local da procedure.

loop em f_depends
    select nextval('nome_da_sequence') into v_seq;
    insert into pessoa (campoSerial, ...) values (v_seq, ...);
    armazena v_seq em array local a_seqs
fim loop

a_seqs terá todos os códigos q tu precisa, sem problema de consistência.



--
Everton

2015-02-25 15:47 GMT-03:00 Matheus Saraiva <[email protected]>:

>  *create or replace function "funcInsertClientes"( cliente integer,
> f_depends "Pessoas"[] ) returns boolean as *
>
> *$BODY$*
>
> *        insert into "Pessoas" -- Insere os dependentes na tabela de
> Pessoas*
> *        (*
> *            nome,*
> *            telefone,*
> *            email,*
> *            endereco,*
> *            imagem*
> *        ) select * from unnest(f_depends);*
>
>         inset into "Dependentes" -- Insere os dependentes na tabela de
> dependentes
>         (
>             pessoa,     -- Código da pessoa (Tabela de Pessoas) FK
>             titular        -- Código da pessoa (Tabela de Pessoas) FK
>         ) ....................................
>
> *    end;*
>
> *$BODY$ language plpgsql volatile cost 100;*
>
> Na função, foi inserido na tabela Pessoas *(uma tabela genérica para todo
> tipo de pessoa),* todos os dependentes de um titular. O segundo insert,
> agora na tabela dependentes, deve adicionar, o código do dependente *(tabela
> de Pessoas)* e o código do titular.
> O ID do titular é tranquilo, pois já está vindo em forma de parâmetro para
> a função, mas como pegar o ID dos dependentes que foram cadastrado na
> tabela genérica de pessoas?
> A solução que pensei, foi pegar o *last_value* da sequência de Pessoas,
> antes e depois de inserir os dependentes. Assim, através da diferença eu
> saberia os ID que acabaram de ser cadastrados. Então, com um laço de
> repetição eu faria os inserts em dependentes.
> Porém, não sei se essa seria a forma mais elegante de se fazer.
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a