So wählen Sie ein PROCEDURE in Firebird 2.5

8

Ich benutze Firebird Embedded v2.5. Wie verwendet man Prozeduren in der Abfrage (SELECT)?

Mein Verfahren:

%Vor%

Ich möchte ein Feld der Tabelle auflisten, das durch eine Prozedur wie folgt geändert wurde:

%Vor%

Benötige Ergebnisse (Tabelle):

%Vor%

Dieses Ding funktioniert gut in PostgreSQL, aber ich weiß nicht, wie man das in Firebird macht.

    
Emil 03.03.2011, 08:03
quelle

8 Antworten

5
%Vor%     
rstrelba 21.02.2012 07:45
quelle
2

Versuchen Sie

%Vor%     
To horse 30.03.2011 11:26
quelle
2

FN_TEST ist eine ausführbare Prozedur : Sie kann über die EXECUTE PROCEDURE -Anweisung aufgerufen werden und gibt einen einzelnen Satz von Ausgabeparametern zurück.

In Firebird 2.x kann nur eine auswählbare gespeicherte Prozedur als View / Tabelle "verwendet" werden (siehe Gespeicherte FireBird-Prozeduren ).

Also:

%Vor%

erzeugt eine ungültige Anfrage BLR bei Offset ... Fehler.

Sie könnten Ihr Verfahren als vorgeschlagen ändern, aber tatsächlich wurde die Funktion, die Sie benötigen, in Firebird 3 in der Form der gespeicherten Funktion :

%Vor%

Weitere Details in Funktionen mit PSQL in Firebird 3 .

    
manlio 26.04.2017 14:24
quelle
1

Verwenden Sie UDF, um die Berechnung von Feldern zu verwalten. Gespeicherte Prozedur wird nur in der FROM-Klausel zugelassen.

    
Marco 28.02.2012 22:33
quelle
1

Wie sagte JustMe , können Sie gespeicherte Prozeduren nicht in einer Auswahl aufrufen. Sie können die gespeicherte Prozedur nur im Abschnitt FROM aufrufen. Eine andere Lösung für Ihr Problem besteht darin, eine auswählbare Prozedur wie diese zu erstellen:

%Vor%

Nachdem Sie diesen Code ausgeführt haben, können Sie einfach select * from myproc(4) abfragen und bekommen, was Sie wollen.

    
Francesco Palladino 21.02.2012 01:41
quelle
1

Sie können gespeicherte Prozeduren nicht in der Auswahlliste von Firebird aufrufen. Sie müssen die auswählbare Prozedur mit Wunschergebnis schreiben oder eine UDF-Funktion schreiben, um das zu tun, was Sie in fn_test procedure haben.

Für Ihren Fall ist der einfachste Weg:

%Vor%     
JustMe 10.03.2011 10:40
quelle
0

Sie können EXECUTE BLOCK verwenden. Schauen Sie sich EXECUTE BLOCK

an     
Biju Soman 17.06.2013 04:35
quelle
0

Versuchen Sie es

%Vor%     
FlixLux 18.07.2014 09:09
quelle