Einzelnen Beitrag anzeigen

TUX_der_Pinguin

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

Re: SQL Rekursive SELECT Abfrage

  Alt 22. Mai 2007, 07:49
Mein erster Lösungs Ansatz sieht wie folgt aus

Delphi-Quellcode:
SQLQuery := TSQLQuery.Create(Self);
SQLQuery.SQLConnection := frmMain.SQLCon;
SQLQuery.SQL.Text := 'CALL GetTree('+QuotedStr(IntToStr(ParentID))+');';
SQLQuery.Open;

If SQLQuery.RecordCount > 0 Then Begin
  While NOT SQLQuery.Eof Do Begin
    ShowMessage(SQLQuery.FindField('Name').AsString);
    SQLQuery.Next;
  End;
End;

SQLQuery.Close;
SQLQuery.Free;
Die Fehlermeldung lautet:
Zitat:
Datenbank-Server-Fehler: PROCEDURE db.GetTree can't return a result set in the given context.
Ich habs mir 'EXECUTE PROCEDURE GetTree()', was ich irgendwo im Forum mal gelesen habe, aber die Syntax
funktioniert schon nicht mals in der MySQL Console.

Der 2. Lösungs Ansatz, etwas viel versprechender aber es scheitert an der Parameterübergabe:
Delphi-Quellcode:
SQLProc := TSQLStoredProc.Create(Self);
SQLProc.SQLConnection := frmMain.SQLCon;
SQLProc.StoredProcName := 'GetTree';
With SQLProc.Params.CreateParam(ftInteger, '_ParentID', ptInput) Do AsInteger := PID;
SQLProc.Open;

If SQLProc.RecordCount > 0 Then Begin
  ShowMessage(IntToStr(SQLProc.RecordCount));
End;

SQLProc.Close;
SQLProc.Free;
Die Fehlermeldung:
Zitat:
dbExpress-Fehler: [0x0005]: Operation wird nicht unterstützt.
mfg

TUX
  Mit Zitat antworten Zitat