So WÄHLEN Sie ein VERFAHREN, in Firebird 2.5
Ich bin mit Firebird Embedded v2.5. Wie verwenden von Verfahren, die in-Abfrage (SELECT) ?
Meine Vorgehensweise:
SET TERM ^ ;
CREATE PROCEDURE FN_TEST( Y INTEGER )
RETURNS( X INTEGER)
AS
BEGIN
X = Y + 1;
END^
SET TERM ; ^
Möchte ich zur Liste einige der Bereich der Tabelle geändert, die durch einige Verfahren, wie diese:
SELECT some_table_field_1,
fn_test( 4 ) AS zzz,
some_table_field_2,
fn_test( some_table_field_2 ) AS field_2_modified
FROM tb_test
Müssen die Ergebnisse (Tabelle):
some_table_field_1 zzz some_table_field_2 field_2_modified
---------------------------------------------------------------------------
aaa 5 14 15
bbb 5 23 24
www 5 75 76
Dieses Ding funktioniert in PostgreSQL, aber ich weiß nicht, wie das im Firebird.
- Was genau ist dein problem? Bekommst du eine Fehlermeldung? Wenn ja, poste es
Du musst angemeldet sein, um einen Kommentar abzugeben.
fn_test
ist nicht wählbar (es ist ein ausführbare Prozedur). Die vorgeschlagene Lösung erzeugt eine invalid request BLR at offset... Fehler.FN_TEST
ist ein ausführbare Prozedur: es kann aufgerufen werden über dieEXECUTE PROCEDURE
Aussage und es gibt einen einzelnen Satz von output-Parametern.In Firebird 2.x nur eine selectable stored procedure werden kann "verwendet" als eine Sicht /Tabelle (siehe Stored Procedures).
Also:
erzeugt eine invalid request BLR at offset... Fehler.
Könnte man ändern Sie Ihre Vorgehensweise als vorgeschlagen aber eigentlich ist die Funktion, die Sie brauchen, wurde in Firebird 3 in form von gespeicherte Funktion:
Weitere details in Funktionen mit PSQL in Firebird 3.
Versuchen
fn_test
ist nicht wählbar (es ist ein ausführbare Prozedur). Die vorgeschlagene Lösung erzeugt eine invalid request BLR at offset... Fehler.Verwenden UDF zu verwalten, um die Berechnung der Felder.
Gespeicherte Verfahren sind admited nur in der FROM-Klausel.
Versuchen, diese
Als JustMe sagte, können Sie keine gespeicherten Prozeduren aufrufen, die in eine Auswahl. Sie können rufen Sie die gespeicherte Prozedur nur in der FROM-Abschnitt. Eine andere Lösung für Ihr problem ist die Schaffung einer wählbaren Verfahren wie diesem:
After-run-code, können Sie einfach die Abfrage
select * from myproc(4)
und bekommen, was Sie wollen.Kann nicht aufgerufen werden gespeicherte Prozeduren in Firebird select-Liste. Schreiben Sie die wählbaren Verfahren, mit dem Wunsch zu führen oder schreiben Sie eine UDF-Funktion zu tun, was Sie in
fn_test
Verfahren.Für Ihren Fall die einfachste Möglichkeit ist:
Können Sie verwenden die EXECUTE-BLOCK Bitte haben Sie einen Blick EXECUTE BLOCK