Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Fehlermeldung bei Aufruf einer Stored Procedure (https://www.delphipraxis.net/52951-fehlermeldung-bei-aufruf-einer-stored-procedure.html)

Gimli2 7. Sep 2005 12:41

Datenbank: Oracle • Version: 9i • Zugriff über: Direct Oracle Access

Fehlermeldung bei Aufruf einer Stored Procedure
 
Hallo,

ich habe ein Problem beim Ausführen von Stored Procedures (Package) in einer Oracle 9i DB.
Die Klasse mit den Stored Procedures Definitionen ist "pack". Diese wurde mit dem Package Assistent von "Direct Oracle Access" erstellt..
Wenn alles ohne Fehlermeldung abläuft, geht alles wunderbar.
Aber sobald eine Procedure aus dem PAckage eine Fehlermeldung erzeugt (Variablen: error,sql),
wird die Fehlermeldung bei der Ausführung jeder anderen Stored Procedure auch angezeigt obwohl die Procedure ohne Fehler durchläuft.
Wenn ich das Programm neu starte dann funktioniert wieder alles, solange bis wieder eine Fehlermeldung kommt.
Muss ich nach jedem Aufruf einer Stored Procedure wieder etwas freigeben, oder woran könnte es liegen?

Steffen


Delphi-Quellcode:
procedure TForm1.fill_grid;
var
 sql,error : double;
 count : integer;
begin
  if (count >= 1) then
    mOracleDataSet.Close;

  DBGrid1.Columns.Clear;
  pack.Session := mOracleLogon.Session;
  mOracleDataSet.Session := mOracleLogon.Session;

  mDataSource.DataSet := mOracleDataSet;

  pack.Pr_Get_Partitions(mQuery,error,sql);

  if (error = -1) then
  begin
    MessageDlg('SQL-Fehler ' + FloatToStr(sql) + ' beim auslesen der Partitionen aufgetreten.',mtError,[mbOK],0);
    exit;
  end
  else if ((error <> 0) and (error <> -1)) then
  begin
    MessageDlg('Fehlernr ' + FloatToStr(error) + ' beim auslesen der Partitionen aufgetreten.',mtError,[mbOK],0);
    exit;
  end;

  mOracleDataSet.ExternalCursor := mQuery;
  mOracleDataSet.Open;
...

dfried 7. Sep 2005 12:47

Re: Fehlermeldung bei Aufruf einer Stored Procedure
 
Wird denn "error" in deiner StoredProcedure auch auf "0" gesetzt? Oder wird es evtl.nur gesetzt wenn ein Fehler auftritt?

Gimli2 7. Sep 2005 14:09

Re: Fehlermeldung bei Aufruf einer Stored Procedure
 
Die Proceduren sind alle Bestandteil eines Packages.
Die Variablen error und SQL sind Out-Variablen der entsprechenden Proceduren die in der Package Spezifikation beide auf 0 gesetzt werden.
Also müssten sie meiner Meinung nach bei jedem erneuten Aufruf wieder auf 0 gesetzt werden oder?

dfried 7. Sep 2005 14:29

Re: Fehlermeldung bei Aufruf einer Stored Procedure
 
Sind die dort Global definiert?
Wenn ja, dann werden die nur einmal initialisiert bei der ersten Benutzung des Packages innerhalb einer Session. Soll heissen, wenn du keine neue Session machst sondern immer die gleiche Session verwendest werden die nicht wieder neu initialisiert, obwohl du mehrmals eine Funktion aus dem Package aufrufst.

Gimli2 7. Sep 2005 15:37

Re: Fehlermeldung bei Aufruf einer Stored Procedure
 
Ah, ok.
Danke, daran lag es.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:10 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