AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken ADOStoredProc liefert Oraclefehler beim anhäkeln von Active
Thema durchsuchen
Ansicht
Themen-Optionen

ADOStoredProc liefert Oraclefehler beim anhäkeln von Active

Ein Thema von Glühwürmchen · begonnen am 24. Jan 2011 · letzter Beitrag vom 25. Jan 2011
Antwort Antwort
Benutzerbild von Glühwürmchen
Glühwürmchen

Registriert seit: 31. Okt 2003
Ort: Pfinztal
156 Beiträge
 
Delphi 2010 Professional
 
#1

AW: ADOStoredProc liefert Oraclefehler beim anhäkeln von Active

  Alt 24. Jan 2011, 15:48
Provider=OraOLEDB.Oracle.1;Password=...;Persist Security Info=True;User ID=...;Data Source=XE;Extended Properties=""
Gruß Glühwürmchen
<><
  Mit Zitat antworten Zitat
Benutzerbild von Glühwürmchen
Glühwürmchen

Registriert seit: 31. Okt 2003
Ort: Pfinztal
156 Beiträge
 
Delphi 2010 Professional
 
#2

AW: ADOStoredProc liefert Oraclefehler beim anhäkeln von Active

  Alt 24. Jan 2011, 15:51
Kaum macht man es richtig, schon geht es!
Der Tip mit dem "ExecProc" war zielführend.

Danke.
Gruß Glühwürmchen
<><
  Mit Zitat antworten Zitat
Benutzerbild von Glühwürmchen
Glühwürmchen

Registriert seit: 31. Okt 2003
Ort: Pfinztal
156 Beiträge
 
Delphi 2010 Professional
 
#3

AW: ADOStoredProc liefert Oraclefehler beim anhäkeln von Active

  Alt 24. Jan 2011, 16:35
Nun habe ich aber doch noch eine Frage:

Wenn das hier das Script ist, mit dem die SP in die DB kam,

was muss ich dann tun um an den ReturnWert der SP heranzukommen?

CREATE OR REPLACE FUNCTION SP_BlaBlub(iAbc_ID in varchar2) return varchar2
IS
tCnt pls_integer;
tRes varchar2(4) := 'F';
begin
select count(*) into tCnt from tableXox t where Xyz_ID = '14' and t.P_ID = iAbc_ID;
if tCnt > 0 then
tRes := 'T';
end if;
return tRes;
EXCEPTION
WHEN OTHERS THEN
...
;
END;

Ich habe bisher folgende drei Zeilen:
ADOStoredProc_SP_BlaBlub.Open;
DM1.ADOStoredProc_SP_BlaBlub.Parameters.ParamValue s['iAbc_ID'] := '020880';
DM1.ADOStoredProc_SP_BlaBlub.ExecProc;

Wie was muss ich schreiben um an
tRes
heranzukommen?
Gruß Glühwürmchen
<><
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.655 Beiträge
 
Delphi 12 Athens
 
#4

AW: ADOStoredProc liefert Oraclefehler beim anhäkeln von Active

  Alt 24. Jan 2011, 16:39
Ich kenne mich mit der Kombination ADO/Oracle zwar nicht aus, aber geht es so?
Delphi-Quellcode:
DM1.ADOStoredProc_SP_BlaBlub.Parameters.ParamValues['iAbc_ID'] := '020880';
DM1.ADOStoredProc_SP_BlaBlub.Open;
ShowMessage(DM1.ADOStoredProc_SP_BlaBlub.Fields[0].AsString);
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: ADOStoredProc liefert Oraclefehler beim anhäkeln von Active

  Alt 24. Jan 2011, 16:48
Wenn die SP bereits auf der Datenbank liegt, müsstest du eigentlich so an das Ergebnis kommen:

Code:
SELECT SP_BLABLUB('020880') ERGEBNIS FROM DUAL
Dieses Statement packst du in eine AdoQuery und rufst das Ergebnis mit Open und FieldByNAme('Ergebnis').AsString ab. Dann brauchst du natürlich auch keine AdoStoredProcedure mehr...

Grüße
Mikhal
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat
Benutzerbild von Glühwürmchen
Glühwürmchen

Registriert seit: 31. Okt 2003
Ort: Pfinztal
156 Beiträge
 
Delphi 2010 Professional
 
#6

AW: ADOStoredProc liefert Oraclefehler beim anhäkeln von Active

  Alt 24. Jan 2011, 17:10
Code:
SELECT SP_BLABLUB('020880') ERGEBNIS FROM DUAL
FROM DUAL?
Was ist "DUAL"?
Ja, die StoredProcedure ist schon auf der DB.



Code:
ShowMessage(DM1.ADOStoredProc_SP_BlaBlub.Fields[0].AsString);
Nein, dieser Code funzt nicht. Er bringt wieder den eingangs erwähnten Fehler.
Gruß Glühwürmchen
<><
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: ADOStoredProc liefert Oraclefehler beim anhäkeln von Active

  Alt 24. Jan 2011, 17:19
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
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#8

AW: ADOStoredProc liefert Oraclefehler beim anhäkeln von Active

  Alt 24. Jan 2011, 18:07
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;
Andreas
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#9

AW: ADOStoredProc liefert Oraclefehler beim anhäkeln von Active

  Alt 24. Jan 2011, 19:15
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.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von Glühwürmchen
Glühwürmchen

Registriert seit: 31. Okt 2003
Ort: Pfinztal
156 Beiträge
 
Delphi 2010 Professional
 
#10

AW: ADOStoredProc liefert Oraclefehler beim anhäkeln von Active

  Alt 25. Jan 2011, 11:00
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.
Gruß Glühwürmchen
<><
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:27 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