Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   [Oracle PL/SQL] Aktuell ausgeführte Funktion/Proc ermitteln? (https://www.delphipraxis.net/77563-%5Boracle-pl-sql%5D-aktuell-ausgefuehrte-funktion-proc-ermitteln.html)

Phoenix 21. Sep 2006 08:50

Datenbank: Oracle • Version: 10g • Zugriff über: Irrelevant

[Oracle PL/SQL] Aktuell ausgeführte Funktion/Proc ermitteln?
 
Hi an alle ORACLE-Spezis hier ;-)

Ich will in PL/SQL in einer Stored Procedure bzw. in einer Function den Namen der aktuell ausgeführten Funktion ermitteln (für ein Fehlerlogging in der Exception-Behandlung).

Den atuellen Fehlertext habe ich in SQLERRM, aber wie bekomme ich den aktuellen Funktions- / Prozedurnamen raus?

Elvis 21. Sep 2006 09:10

Re: [Oracle PL/SQL] Aktuell ausgeführte Funktion/Proc ermitt
 
Zitat:

Zitat von Phoenix
Den atuellen Fehlertext habe ich in SQLERRM, aber wie bekomme ich den aktuellen Funktions- / Prozedurnamen raus?

Gar nicht. Ist ein known issue. Du kannst maximal das Package herausfinden, aber nicht die SProc.
Delphi-Quellcode:
create or replace package Blabla is
  subtype TSProcName is varchar(69);

  function getCurrentSProc return TSProcName;
  procedure setCurrentSProc(value in TSProcName);

end Blabla;
Delphi-Quellcode:
create or replace package body Blabla is
  fCurrentSProc TSProcName;

  function getCurrentSProc return TSProcName is
  begin
    return fCurrentSProc;
  end;

  procedure setCurrentSProc(value in TSProcName) is
  begin
    fCurrentSProc := value;
  end;

end Blabla;
Du könntest dir natürlich ein Package schreiben, in dem du selbst die aktuelle SProc einträgst, damit du sie zum Zeitpunkt des Kaboom zur Hand hast.
Ich hatte selbst mal ein Highjacking auf die Debugger API versucht, aber die bekommst du nicht wirklich in eine laufende Session injeziert ohne dass sich diese in Wohlgefallen auflöst.

btw: Ich hatte mir gestern deinen Code zwischen Galactica S2 Folge 18 & 19 angesehen und es dauerte mindestens 30 Minuten bis ich die CoreLabs Klassen durch die ADO-Net Intefaces getauscht, das Erzeugen der Connection durch die ProviderFactories ersetzt hatte und schließlich sämtlichen DB Kramst aus den Containerklassen in eine eigene Mapperklasse umgebogen hab.
Anders hätte ich wohl nichts testen können. :|


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz