funções no postgree
pessoal, qual a finalizade das funções(functions)??? elas trabalham em conjunto com as aplicações???
Alan Mario
Curtidas 0
Respostas
Bruno Leandro
01/11/2012
a função serve para voce criar a sua regra de negocio ou algum processo, ex: voce pode passar o codigo do cliente e gerar um cobrança ou retornar quantas parcelas tem pendentes
ex
select MinhaFuncao_ParcelasPendentes(1)
resultado: 12
ex
select MinhaFuncao_ParcelasPendentes(1)
resultado: 12
GOSTEI 0
Lucas Araujo
01/11/2012
é tudo o que BRUNO LEANDRO falou.. e sim ela pode trabalhar em acordo com a aplicação, é até melhor colocar as suas funções no banco pois é mais fácil de fazer alterações. elas podem ser feita na linguagem pl/pgsql ou em outras linguagem.
GOSTEI 0
Tiago
01/11/2012
Alan, é importante também que leia sobre stored procedures pois elas são similares as functions.. porem a stored procedure não tem retorno e a function tem.
GOSTEI 0
Alan Mario
01/11/2012
obrigado a todos, pela resposta...poderia me dar mais exemplos, com codigo, por favor...
GOSTEI 0
Lucas Araujo
01/11/2012
vou mostrar um exemplo básico, que é uma function para inserir um cliente em uma tabela caso ele não exista.
script de criação da tabela:
create table cliente(
id_cliente serial,
nome_cliente varchar(40));
script de criação da função:
create or replace function novoCliente(_nome varchar(40))returns void as
$$
BEGIN
perform * from cliente where nome_cliente = _nome;
if not found then
insert into cliente values (default, _nome);
RAISE NOTICE 'CLIENTE CADASTRADO COM SUCESSO';
else
RAISE NOTICE 'CLIENTE JÁ CADASTRADO';
END
$$
language plpgsql
essa é uma função simples que não retorna nenhum valor, por isso o returns void.
em funções em vez de usarmos select * from... usamos perform, pois para usarmos um select precisamos jogar o resultado do select para alguma variável e como esse exemplo é só pra fazer uma verificação não precisamos guardar o resultado do select.
A logica é simples: se não achar algum resultado para o select com o valor passado por parâmetro então ele é inserido na tabela, se achar aparece uma mensagem a nível de banco(ela não aparece em uma aplicação) informando que esse cliente ja foi cadastrado.
como vc ja deve ter percebido RAISE NOTICE serve para passar uma mensagem a nível de banco.
para chamar essa função vc deve usar o comando select mais o nome da função e parâmetro.
Ex:
select novoCliente('Joao')
como eu falei esse é um exemplo básico e apenas para demostração.
script de criação da tabela:
create table cliente(
id_cliente serial,
nome_cliente varchar(40));
script de criação da função:
create or replace function novoCliente(_nome varchar(40))returns void as
$$
BEGIN
perform * from cliente where nome_cliente = _nome;
if not found then
insert into cliente values (default, _nome);
RAISE NOTICE 'CLIENTE CADASTRADO COM SUCESSO';
else
RAISE NOTICE 'CLIENTE JÁ CADASTRADO';
END
$$
language plpgsql
essa é uma função simples que não retorna nenhum valor, por isso o returns void.
em funções em vez de usarmos select * from... usamos perform, pois para usarmos um select precisamos jogar o resultado do select para alguma variável e como esse exemplo é só pra fazer uma verificação não precisamos guardar o resultado do select.
A logica é simples: se não achar algum resultado para o select com o valor passado por parâmetro então ele é inserido na tabela, se achar aparece uma mensagem a nível de banco(ela não aparece em uma aplicação) informando que esse cliente ja foi cadastrado.
como vc ja deve ter percebido RAISE NOTICE serve para passar uma mensagem a nível de banco.
para chamar essa função vc deve usar o comando select mais o nome da função e parâmetro.
Ex:
select novoCliente('Joao')
como eu falei esse é um exemplo básico e apenas para demostração.
GOSTEI 0