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.
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 .
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.
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%Sie können EXECUTE BLOCK verwenden. Schauen Sie sich EXECUTE BLOCK
anTags und Links select stored-procedures firebird firebird2.5