2010-02-12 2 views

Répondre

1

Ajouter une déclaration à la procédure:

update statistics_table 
    set proc_a_count = proc_a_count + 1; 

Bien sûr, vous devrez créer une table appropriée pour maintenir le comptage et l'initialiser avec un zéro sur le terrain.

+1

sauf que cela sérialiserait la procédure. –

1

insérez une ligne dans une table de journal.

+0

Cela ne fonctionnera que si l'insertion dans le fichier journal est garantie pour être validée indépendamment de l'unité d'application de wok, ce qui nécessite une transaction autonome, et cela devient dangereux. L'exécution d'audit est la meilleure solution. –

+0

D'accord, la fonctionnalité d'audit d'Oracle est une excellente et peut-être meilleure option, mais les transactions autonomes ne sont dangereuses que si elles sont mal utilisées. Je les utilise lorsque je veux enregistrer une activité, quel que soit le succès/l'échec de la transaction appelante. A cet effet, ils sont parfaitement adaptés. –

1

Oracle ne suit pas ce genre de chose par défaut, mais si vous voulez juste enregistrer quelques informations simples puis activer la fonctionnalité AUDIT intégrée:

AUDIT EXECUTE PROCEDURE BY ACCESS; 

Vous pouvez afficher les accès dans la vue dba_audit_trail . Find out more.

Si, pour une raison quelconque, vous ne souhaitez pas utiliser la piste d'audit (si vous souhaitez capturer plus d'informations), vous devrez utiliser votre propre mécanisme de journalisation. C'est un bon usage pour le pragma AUTONOMOUS TRANSACTION. Veillez simplement à ce que l'écriture des enregistrements de journal n'a pas un impact indu sur les performances de votre application.

modifier

Le rôle de la procédure B dans votre question est tout à fait superflu: soit les enregistrements de base de données comment procédure souvent fonctionne ou bien A écrit ses propres enregistrements de trace. A moins que B ne soit une requête conditionnée sur le journal (quelle que soit sa mise en œuvre)?

Questions connexes