Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Firebird Stored Procedure in Select verwenden (https://www.delphipraxis.net/158637-firebird-stored-procedure-select-verwenden.html)

TheFrog 24. Feb 2011 16:20

Datenbank: Firebird • Version: 2.1.3 • Zugriff über: IBX

Firebird Stored Procedure in Select verwenden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,

ich möchte gerne eine Stored Procedure erstellen welche ich in einem Select verwenden kann und welche einen Aufrufparameter erhält.

Beispiel:

Select c.Name, a.Age
from Customer c, Get_Age_For_Customer(c.ID) a;

Die Stored Procedure ist folgendermassen deklariert:

PROCEDURE Get_Age_For_Customer(IDCustomer Integer)
returns (Age Integer)
begin
Age = 50; // muss natürlich berechnet werden
Suspend;
end;

D.h. ich möchte eine Liste mit allen Namen von Kunden und dem berechneten Alter erhalten.

Ist sowas überhaupt möglich?

Wenn ich es wie oben im IBExpert ausprobiere erhalte ich immer die angehängte Fehlermeldung.

Merci, Hans.

dataspider 24. Feb 2011 16:52

AW: Firebird Stored Procedure in Select verwenden
 
Hi,

SP wie einen SubSelect in Klammern:
Code:
Select c.Name, (select age from Get_Age_For_Customer(c.ID)) as age from Customer c
[EDIT]
Das geht auch und mache ich oft, wenn die SP mehrere Ausgabe - Parameter hat:
Code:
Select c.name
     , a.age from Customer c
       left join Get_Age_For_Customer(c.ID) a on 1 = 1
[/EDIT]
Frank

TheFrog 25. Feb 2011 07:51

AW: Firebird Stored Procedure in Select verwenden
 
Morgen Frank,

vielen Dank für die Antwort!

Hat beides funktioniert!

Soweit ich es in Erinnerung habe, ist ein Subselect ziemlich langsam. Kann es sein, dass die zweite Variante mit dem Join schneller ist?

Hans.

Lemmy 25. Feb 2011 08:37

AW: Firebird Stored Procedure in Select verwenden
 
Hi,

beim Subselect bekommst Du nur einen Parameter zurück und du solltest genau drauf achte, dass hier auch nur ein Datensatz zurück kommen können. Wenn es mal mehr sind knallts...

Und wegen der GEschwindigkeit: jedes bessere SQL-Tool das ich kenne (FlameRobin bis IBExpert) gibt dir Werte bzgl. Dauer der Ausführung, Fetch usw. aus.... Probiers doch einfach aus...

GRüße

TheFrog 25. Feb 2011 09:50

AW: Firebird Stored Procedure in Select verwenden
 
Hi,

laut IBExpert braucht der SubSelect etwas länger.

Dies deckt sich auch mit der Theorie :)

Danke für die Antworten.

Hans.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:45 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