Em Sex, 2015-02-27 às 12:06 -0300, Guimarães Faria Corcete DUTRA,
Leandro escreveu:
> 2015-02-27 12:03 GMT-03:00 Matheus Saraiva <[email protected]>:
> >
> > Segue o código http://paste.ubuntu.com/10449853/
> 
> Bloqueado para mim.  Por favor, no corpo da mensagem, e em texto
> simples.  Nunca mande mensagens HTML aqui para esta lista.

Ok :), eu opto por mandar no ubuntu paste pois para mim é extremamente
incomodo ler um código sem syntax highlighter.

Segue...

create or replace function "funcInsertClientes"
(
    f_nome varchar, -- $1
    f_telefone varchar, -- $2
    f_email varchar, -- $3
    f_endereco integer, -- $4
    f_imagem oid, -- $5
    f_rg varchar, -- $6
    f_cpf varchar, -- $7
    f_login varchar, -- $8
    f_senha varchar, -- &9
    f_modulos typeacesso[], --$10
    f_depends typedependente[] -- $11
) returns boolean as 

$BODY$

    declare 
        person integer;  -- Pessoa que está sendo inserida
    
    begin
                            --INSERE ENDEREÇO (funcInsertEndereco)--
                            --.--
                            --.--
                            --.--
                            --.--
                            
                            --INSERE PESSOA E CLIENTE--
        With pess as
        (
                insert into "Pessoas" -- Inserre o cliente na tabela de
pessoas
                (
                    nome,
                    telefone,
                    email,
                    endereco,
                    imagem
                ) values ($1, $2, $3, $4, $5) returning codigo -- Insere
a pessoa e retorna o código
        ) 
        insert into "Clientes" -- Insere o cliente na tabela de clientes
        (
            pessoa,
            rg,
            cpf
        ) select pess.codigo, $6, $7 returning pessoa into person;--
Insere o cliente e retorna o código (campo pessoa) para a variável
person



                        --- INSERE OS DEPENDENTES ---
        with deps AS
        (
            insert into "Pessoas" -- Insere os dependentes na tabela de
Pessoas
            (
                nome,
                telefone,
                email,
                endereco,
                imagem
            ) select * from unnest(f_depends) returning codigo -- Insere
os dependentes da lista e retorna o código

        ) insert into "Dependentes"(pessoa, cliente) select deps.codigo,
person; -- Insere os dependentes na tabela de Dependentes



                            --- INSERE CHAVE E FISICAS ---
        With chv as
        (
            with kei as
            (
                insert into "Chaves" -- Inserer a chave (Login e Senha)
na tabela de chaves
                (
                    login,
                    senha

                ) values ($8, $9) returning codigo -- Inserer a chave e
retorna o código da mesma
                
            ) insert into "Fisicas"(pessoa, chave) values (person,
kei.codigo) returning chave -- Insere a pessoa na tabela de de pessoas
Fisica e retorna a chave

        )
        Insert into "Acessos" -- Insere as liberações aos modulos na
tabela Acessos
        (
            chave,
            modulo,
            liberacao

        ) select chv.chave, * from unnest(f_modulos); -- Insere os
modulos e suas liberações referentas à chave

        return true;

                                --- EXCEÇÕES ---
        exception

            when NOT_NULL_VIOLATION THEN
                RAISE NOTICE 'Required filds are blank';
                return false;
            when UNIQUE_VIOLATION THEN
                RAISE NOTICE 'One or more unique keys were violated';
                RETURN FALSE;
             WHEN RESTRICT_VIOLATION THEN
                RAISE NOTICE 'One or more restricts were violated';
                return false;
    end;

$BODY$

language plpgsql volatile cost 100;

alter function "funcInsertClientes"
(   varchar,
    varchar,
    varchar,
    integer,
    oid,
    varchar,
    varchar,
    varchar,
    varchar,
    typeacesso[],
    typedependente[]
) owner to postgres;

comment on function "funcInsertClientes"
(   varchar,
    varchar,
    varchar,
    integer,
    oid,
    varchar,
    varchar,
    varchar,
    varchar,
    typeacesso[],
    typedependente[]
) is 'Função para inserir clientes';

_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a