AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Oracle Exception im Debug-Modus
Thema durchsuchen
Ansicht
Themen-Optionen

Oracle Exception im Debug-Modus

Ein Thema von Sven M. · begonnen am 27. Mai 2015 · letzter Beitrag vom 28. Mai 2015
 
Sven M.

Registriert seit: 21. Okt 2006
Ort: Halle/Saale
106 Beiträge
 
Delphi 5 Enterprise
 
#1

Oracle Exception im Debug-Modus

  Alt 27. Mai 2015, 13:27
Datenbank: Oracle • Version: 11 • Zugriff über: FireDac
Tach zusammen

Ich versuche via FireDac auf eine Oracle-DB zuzugreifen, was soweit auch erstmal ganz gut funktioniert. Nun besteht aber die Notwendigkeit, bei Programmstart einen Trigger zu erstellen, der dann bei Programmende wieder gedroppt wird.

Codemäßig sieht das im FormShow folgendermaßen aus:

Delphi-Quellcode:
  DBCOnnection.Open;
  QueryData.Open;
  QueryTriggerExists.Open;
  AlerterDataChange.Register;

  if QueryTriggerExists.RecordCount=0 then
  begin
    DBCommand.CommandText.Clear;
    DBCommand.CommandText.Add('CREATE OR REPLACE TRIGGER PROD.TR_CHANGE_TABLE_DATA');
    DBCommand.CommandText.Add('AFTER DELETE OR INSERT OR UPDATE ON PROD.DATA');
    DBCommand.CommandText.Add('BEGIN');
    DBCommand.CommandText.Add('SYS.DBMS_ALERT.SIGNAL (''DATA_CHANGE'', ''TEST_ALERT'');');
    DBCommand.CommandText.Add('END;');
    DBCommand.Execute;
  end;
Während der Programmausführung kommen die extern herbeigeführten Änderungen (über APEX) auch problemlos im verknüpften DBGrid an.
Beim Schließen des Fensters soll dann der Trigger aber wieder gelöscht werden:

Delphi-Quellcode:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  AlerterDataChange.Unregister;
  QueryTriggerExists.Refresh;
  if QueryTriggerExists.RecordCount>0 then
  begin
    //trigger erst deaktivieren, dann löschen
    DBCommand.Execute('ALTER TRIGGER PROD.TR_CHANGE_TABLE_DATA DISABLE');
    DBCommand.Execute('DROP TRIGGER PROD.TR_CHANGE_TABLE_DATA');
  end;

  DBConnection.Close;
end;
Und hier tritt folgendes Phänomen auf. Im Debug-Modus aus Delphi heraus bekomme ich eine EOCINativeException:
"[FireDac][Phys][Ora] ORA-01013: Benutzer hat Abbruch des aktuellen Vorgangs angefordert"
Starte ich die kompilierte Exe aber ohne die IDE funktioniert alles problemlos. Kann mir das Phänomen jemand erklären?
Oder mache ich prinzipiell etwas falsch? Muss dazu sagen, dass Oracle generell und der Zugriff via Firedac noch ziemliche böhmische Dörfer für mich sind.



Vieln Dank im Voraus
Sven
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz