- Este tópico contém 10 respostas, 5 vozes e foi atualizado pela última vez 16 anos, 4 meses atrás por
souza.
-
AutorPosts
-
10 de novembro de 2009 às 4:11 pm #90802
souza
ParticipantePessoal ,
Estou criando uma function em minha base, que não dá erro nenhum na criação. Porém depois de um tempo ela fica inválida !
Como posso verificar o que está ocorrendo ?
Obrigado
10 de novembro de 2009 às 4:38 pm #90804diegolenhardt
ParticipanteFica invalida mostrando que erro?
Será que não estão modificando algum objeto que a function faz referencia?
10 de novembro de 2009 às 5:09 pm #90807souza
ParticipanteEla simplesmente fica inválida, porém na hora que é compilada não ocorre nenhum erro. E também não estamos alterando nenhum objeto que faz referência a ela.
Existe alguma forma de habilitar algum tipo de auditoria sobre a function ou algo parecido para tentar descobrir ?
10 de novembro de 2009 às 5:36 pm #90810diegolenhardt
Participantemuito estranho.. uma possibilidade é ter algum job, já que é de tempo em tempo, enfim, veja o link abaixo:
audit trail oracle
http://www.oracle-base.com/articles/10g … _10gR2.php
=]
10 de novembro de 2009 às 5:47 pm #90811Manoel872
ParticipanteBom dia,
Seguinte caso vc altere um algum objeto que referencia ela você descompilará essa function e terá que recompilar.
Att,
Manoel Jr
10 de novembro de 2009 às 8:24 pm #90816souza
Participantenão tenho nenhum job e a função também não referencia nenhum objeto, é uma função apenas de lógica…
Souza
10 de novembro de 2009 às 10:35 pm #90822diegolenhardt
ParticipanteQuando descubrir posta aí pra saber o que era,
acho que só com a auditoria mesmo…
11 de novembro de 2009 às 3:36 pm #90834Rodrigo Mesquita
ParticipanteSouza,
Algum objeto é chamado dentro dela? Se este objeto chamado dentro dela ficar inválido ela tambem ficará.Se der posta ela aqui para olharmos.
11 de novembro de 2009 às 3:44 pm #90836rwarstat
ParticipanteUma dúvida que me surgiu com essa situação.
Tenho uma função que chama uma procedure que por sua vez referencia uma tabela. Se a tabela for modificada a procedure ficará inválida e na conseqüência a função também, correto?[]´s
Roberto11 de novembro de 2009 às 3:49 pm #90837Rodrigo Mesquita
Participantecorreto!
11 de novembro de 2009 às 3:58 pm #90839souza
ParticipanteSegue a function
CREATE OR REPLACE FUNCTION SCHEMA.FNC_CALC_VL_TOTAL_ITEM (pc_in_5_casas_vl_total CHAR,
pc_in_trunc_vl_total CHAR, pn_qt_lcto NUMBER, pn_vl_lcto NUMBER, pn_vl_lcto_original NUMBER) RETURN NUMBER IS
ln_vl_total NUMBER := 0;
ln_vl_lcto_original NUMBER := 0;BEGIN
ln_vl_lcto_original := pn_vl_lcto_original;
if (ln_vl_lcto_original is null or ln_vl_lcto_original = 0) then
ln_vl_lcto_original := pn_vl_lcto;
end if;
if (pc_in_5_casas_vl_total = ‘S’) then
ln_vl_total := pn_qt_lcto * ln_vl_lcto_original;
elsif (pc_in_5_casas_vl_total = ‘N’) then
ln_vl_total := pn_qt_lcto * pn_vl_lcto;
end if;
if (pc_in_trunc_vl_total = ‘S’) then
ln_vl_total := trunc(ln_vl_total, 2);
elsif (pc_in_trunc_vl_total = ‘N’) then
ln_vl_total := round(ln_vl_total, 2);
end if;
RETURN ln_vl_total;
EXCEPTION
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20001,
‘Erro ao calcular o valor total do lançamento do item.’ ||
chr(10) || ‘Rotina BD: FNC_CALC_VL_TOTAL_ITEM()’ || chr(10)
|| SQLCODE || ‘-‘ || SQLERRM);
END;
/ -
AutorPosts
- Você deve fazer login para responder a este tópico.