Fórum Função para calcular a idade por uma data de nascimento #479731
21/05/2014
0
Frederico Brigatte***
Curtir tópico
+ 0Posts
21/05/2014
Marisiana Battistella
Encontrei esse exemplo na web, mas não sei se funciona pois estou sem o Oracle aqui pra testar...
SELECT
trunc((months_between(sysdate, to_date('25/01/1987','dd/mm/yyyy')))/12) AS idade
FROM DUAL
[url]http://allanfreitas.com.br/banco-de-dados/calcular-idade-pela-data-de-nascimento-no-oracle[/url]
Espero que funcione....
Gostei + 0
21/05/2014
Frederico Brigatte***
Gostei + 0
21/05/2014
Marisiana Battistella
SELECT trunc((months_between(sysdate, to_date(c.dt_nascimento,'dd/mm/yyyy')))/12) AS idade FROM cliente c WHERE c.cod_cliente = v_codigo
Pela lógica seria assim. Testa aí pra ver se funciona...
Gostei + 0
21/05/2014
Frederico Brigatte***
Gostei + 0
22/05/2014
Deivison Melo
create or replace function RetornaIdade(pData In Date) return number is
cursor cData(pData in Date) is
SELECT trunc((months_between(sysdate, pData))/12) idade
FROM DUAL;
vcData cData%rowtype;
begin
open cData(pData);
fetch cData into vcData;
close cData;
return vcData.idade;
end;
Gostei + 0
22/05/2014
Deivison Melo
Qualquer erro por favor me comunicar!!!
Gostei + 0
22/05/2014
Frederico Brigatte***
Gostei + 0
22/05/2014
Marisiana Battistella
Gostei + 0
22/05/2014
Frederico Brigatte***
Gostei + 0
22/05/2014
Marisiana Battistella
Indica que a function recebe uma data como parâmetro...
Gostei + 0
22/05/2014
Frederico Brigatte***
Gostei + 0
22/05/2014
Marisiana Battistella
CREATE FUNCTION calcula_idadel(in_codigo IN NUMBER)
RETURN NUMBER
IS
v_idade NUMBER(11);
BEGIN
SELECT trunc((months_between(sysdate, to_date(c.dt_nascimento,'dd/mm/yyyy')))/12)
INTO v_idade
FROM cliente c
WHERE c.cod_cliente = in_codigo;
RETURN(v_idade);
END;
Ela recebe o código como parâmetro e retorna a idade calculada a partir da data de nascimento que está cadastrada...
Eu não cheguei a testar se funciona porque não tenho o Oracle aqui no meu PC, peguei exemplos na web e construi a função.
Mas logicamente seria assim, você apenas precisa adaptar ela a realidade que vc está trabalhando.
Gostei + 0
22/05/2014
Marisiana Battistella
[url]http://plsql-tutorial.com/plsql-passing-parameters-procedure-function.htm[/url]
E neste outro link tem uma explicação de como é a estrutura de uma function: [url]http://plsql-tutorial.com/plsql-functions.htm[/url]
Gostei + 0
22/05/2014
Frederico Brigatte***
Gostei + 0
22/05/2014
Marisiana Battistella
Você vai ter que criar essa função no Oracle e chamá-la no PHP passando o código como parâmetro
Um exemplo que já utilizei...
function funCalculaIdade($app, $codigo){
$r = db($app, "F", "nome_schema.fun_calculaidade", $codigo);
return $r;
}
$app é a variável que contém as configurações de conexão com o Oracle.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)