AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Stored Procedure via Zeos auf mySQL
Thema durchsuchen
Ansicht
Themen-Optionen

Stored Procedure via Zeos auf mySQL

Ein Thema von TUX_der_Pinguin · begonnen am 4. Mai 2010
Antwort Antwort
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
608 Beiträge
 
Delphi 11 Alexandria
 
#1

Stored Procedure via Zeos auf mySQL

  Alt 4. Mai 2010, 11:00
Datenbank: mySQL • Version: 5.0.27 • Zugriff über: Zeos Lib 6.6.6
Hallo Dpler,

ich versuche mich gerade an dem Thema Gespeicherte Prozeduren, dazu habe ich eine kleine Routine geschrieben.
Die eine einfache Select Abfrage ausführt und mir ein Ergebnis liefern soll, an die Routine wird ein Parameter übergeben.

SQL-Code:
DELIMITER $$

CREATE PROCEDURE `cbase2`.`GetIdentEK` (IN PoolID INT, OUT EK FLOAT)
BEGIN
  SELECT Net FROM pool_order_history WHERE PID=PoolID ORDER BY Date LIMIT 1;
END$$
Jetzt habe ich versucht mit der Komponente TZStoredProc aus der Zeos Lib die Gespeicherte Prozedur aufzurufen,
jedoch gelang mir dies bisher nicht. Habe schon hier im Forum gesucht konnte aber bisher kein wirklich
funktionierendes Beispiel finden wie man eine Gespeicherte Prozedur mit Hilfe von TZStoredProc aufruft.

Bei folgendem Versuch erhalte ich immer die Fehlermeldung "Unsupported Operation". Lasse ich "StoredProc.Open"
weg bekomme ich zwar keiner Fehlermeldung, aber auch kein Ergebnis, es passiert also nichts.

Delphi-Quellcode:
procedure TfrmPool_Component.Button1Click(Sender: TObject);
var
  StoredProc: TZStoredProc;

begin
  StoredProc := TZStoredProc.Create(Self);
  try
    StoredProc.Connection := DMSQL.Con;

    StoredProc.StoredProcName := 'cbase2.GetIdentEK';

    StoredProc.Params.Clear;

    with StoredProc.Params.CreateParam(ftInteger, 'PoolID', ptInput) do AsInteger := 0;
    with StoredProc.Params.CreateParam(ftFloat, 'EK', ptOutput) do AsFloat := 0;

    StoredProc.ParamByName('PoolID').AsInteger := 141;

    StoredProc.Open;

    if StoredProc.RecordCount > 0 then begin

      ShowMessage(StoredProc.FindField('EK').AsString);

    end;

  finally
    StoredProc.Close;
    StoredProc.Free;
  end;
end;
Über die mySQL Konsole klappt ein erfolgreicher Aufruf.

Code:
mysql> CALL cbase2.GetIdentEK(141, @res);
+------+
| Net |
+------+
|  254 |
+------+
1 row in set (0.05 sec)

Query OK, 0 rows affected (0.05 sec)
Irritierend finde ich auch wieso eigentlich der Rückgabeparameter "EK" heißen soll aber im Konsolen Aufruf der Name der abgefragten Spalte auftaucht.

mfg

TUX
  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 15:05 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