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