Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   ADOStoredProc liefert Oraclefehler beim anhäkeln von Active (https://www.delphipraxis.net/157767-adostoredproc-liefert-oraclefehler-beim-anhaekeln-von-active.html)

mikhal 24. Jan 2011 17:19

AW: ADOStoredProc liefert Oraclefehler beim anhäkeln von Active
 
DUAL ist die Allerwelts-Tabelle des Oracle-Systems. Die kannst du in jedem Statement einsetzen, wenn du keine Tabelle zur Verfügung stehen hast.

Das FieldByName bezog sich auf die AdoQuery. Das Ergebnis liest du dort über das Feld "ERGEBNIS" des Select-Statements aus.

Bei AdoStoredProcedure musst du wohl noch ein Ergebnisfeld erzeugen: mittels Doppelklick auf das Komponenten-Icon öffnet sich ein Listendialog, in dem du ein Feld definieren kannst (erst mal eins hinzufügen). Darüber kannst du dann den Wert abgreifen, wenn es denn unbedingt diese Komponente sein muss. Aber wie bereits gesagt, mittels der Abfrage über DUAL kannst du dir diesen Umweg sparen (zumal du sowieso nur ein Zeichen als Ergebnis ausgibst).

Grüße
Mikhal

shmia 24. Jan 2011 18:07

AW: ADOStoredProc liefert Oraclefehler beim anhäkeln von Active
 
Zitat:

Zitat von Glühwürmchen (Beitrag 1076925)
Wie was muss ich schreiben um an tRes heranzukommen?

Der Returnwert müsste eigentlich ebenfalls als Parameter auslesbarbar sein:
Delphi-Quellcode:
ADOStoredProc_SP_BlaBlub.Parameters.ParamValue s['iAbc_ID'] := '020880';
ADOStoredProc_SP_BlaBlub.ExecProc;
ergebnis := ADOStoredProc_SP_BlaBlub.Parameters.ParamValues['???'];
Problem ist jetzt nur herauszufinden, welchen Namen der Parameter hat.
Delphi-Quellcode:
var
  i : Integer;
  p : TParameter;
begin
  for i := 0 to ADOStoredProc_SP_BlaBlub.Parameters.Count-1 do
  begin
    p := ADOStoredProc_SP_BlaBlub.Parameters.Items[i];
    ShowMessageFmt('%d: %s - %s',[i, p.Name, FieldTypeNames[p.DataType]]);
  end;

jobo 24. Jan 2011 19:15

AW: ADOStoredProc liefert Oraclefehler beim anhäkeln von Active
 
Hallo,

ich schließe mich Mikhal an.
Wenn in der Lage bist ein TQuery bzw. ein TADOQuery einzusetzen, dann kannst Du Dir etwas Arbeit sparen.

Delphi-Quellcode:
..
myAdoQuery.sql.clear;
myAdoQuery.sql.add('SELECT SP_BLABLUB('020880') ERGEBNIS FROM DUAL');
myAdoQuery.open;
showmessage(myAdoQuery.Fields[0].AsString;
..
Das ist nicht getestet!

Wenn es unbedingt TADOStoredProc sein muss:
Eine Oracle Funktion liefert ihren Rückgabewert unter Delphi glaube ich als 1. Parameter zurück. Kann mich aber nicht genau erinnern, da ich Oracle Funktionen und Prozeduren immer mit TADOQuery verarbeite / aufrufe.

Glühwürmchen 25. Jan 2011 11:00

AW: ADOStoredProc liefert Oraclefehler beim anhäkeln von Active
 
Zitat:

Zitat von jobo (Beitrag 1076961)
Wenn in der Lage bist ein TQuery bzw. ein TADOQuery einzusetzen, dann kannst Du Dir etwas Arbeit sparen.

Delphi-Quellcode:
..
myAdoQuery.sql.clear;
myAdoQuery.sql.add('SELECT SP_BLABLUB('020880') ERGEBNIS FROM DUAL');
myAdoQuery.open;
showmessage(myAdoQuery.Fields[0].AsString;
..
Das ist nicht getestet!


Es geht, es geht !!
Vielen Dank!
Ihr habt mir sehr geholfen.
:thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:21 Uhr.
Seite 2 von 2     12   

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