AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Oracle Stored Function mit ADO
Thema durchsuchen
Ansicht
Themen-Optionen

Oracle Stored Function mit ADO

Ein Thema von egentur · begonnen am 23. Aug 2011 · letzter Beitrag vom 23. Aug 2011
Antwort Antwort
egentur

Registriert seit: 27. Sep 2006
Ort: Freising
60 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

Oracle Stored Function mit ADO

  Alt 23. Aug 2011, 11:17
Datenbank: Oracle • Version: 11g • Zugriff über: ADO
Hallo
Ich habe auf einer KundenDB eine Stored Function
XYZ(X1 in varchar2, X2 in varchar2 ) return varchar2

der Auruf mit TAdoQuery 'select XYZ('a','b') from DUAL'
funktioniert leider nicht, da die Function innerhalb Updates, Inserts etc. hat.
Mit PL/SQL kann ich die Function testen mit

begin
:result := XYZ(X1 => :X1, X2 => :X2);
end;

Die Parameter :X1 und :X2 werden abgefragt.

Meine Frage nun: wie kann ich dieses SQL in Delphi 2009 mit ADO umsetzen ?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Oracle Stored Function mit ADO

  Alt 23. Aug 2011, 11:32
Welcher ADO-Provider. Der von MS ist Schrott und ist von MS abgekündigt.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
egentur

Registriert seit: 27. Sep 2006
Ort: Freising
60 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

AW: Oracle Stored Function mit ADO

  Alt 23. Aug 2011, 11:48
Ist der Oracle Provider for OLEDB
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Oracle Stored Function mit ADO

  Alt 23. Aug 2011, 11:50
Wie zeigt sich der Fehler? Fehlermeldung?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
egentur

Registriert seit: 27. Sep 2006
Ort: Freising
60 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#5

AW: Oracle Stored Function mit ADO

  Alt 23. Aug 2011, 12:11
ORA-14551: cannot perform a DML operation inside a query

was ja auch richtig ist, deshalb benötige ich ja den Aufruf in der anderen Art
  Mit Zitat antworten Zitat
jaevencooler

Registriert seit: 8. Sep 2005
Ort: Friedrichshafen
41 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Oracle Stored Function mit ADO

  Alt 23. Aug 2011, 12:31
Moin, Moin,

ich bi jetzt nicht so der ADO Profi, aber ich denke mal so könnte es funktionieren:

Delphi-Quellcode:

  Query.DeclareVariable('function_result', otFloat); // Hier wird das Ergebnis der Funktion gespeichert
  Query.DeclareVariable('APROJECTID', otFloat); // Variablen deklarieren, wie das genau in ADO geht weißt Du sicher besser als ich
  Query.SetVariable('APROJECTID', Aprojectid); // Variablenwerte setzen
  Query.DeclareVariable('AERRORMESSAGE', otString);
  Query.DeclareVariable('AERRORSQLSTMNT', otString);
  // PL/SQL Block, hier kannst Du auch mit in und out Variablen arbeiten
  Query.SQL.Add('begin');
  Query.SQL.Add(' :function_result := "PPLA_ROUTINEN"."COPYPROJECT"(');
  Query.SQL.Add(' APROJECTID => :APROJECTID,');
  Query.SQL.Add(' AERRORMESSAGE => :AERRORMESSAGE,');
  Query.SQL.Add(' AERRORSQLSTMNT => :AERRORSQLSTMNT);');
  Query.SQL.Add('end;');
  Query.Execute;
  
  Result := ConvertVariant(OCPQuery.GetVariable('function_result'));
  Aerrormessage := ConvertVariant(OCPQuery.GetVariable('AERRORMESSAGE'));
  Aerrorsqlstmnt := ConvertVariant(OCPQuery.GetVariable('AERRORSQLSTMNT'));
wichtig ist eben das Du das ganze als PL/SQL Block übergibst, und nicht als ein Select


Gruß
Michael
Michael
Wissen ist Macht, nichts wissen macht auch nichts.
  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 13:58 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