Ich frage mich, ob möglich ist, mehr als eine Zeile in einer SELECT
Abfrage in Firebird 1.5, wie Sie unten zurück:Ist es möglich, mehrere Zeilen in einer Firebird gespeicherten Prozedur zurückzugeben?
| FIELD1 | FIELD 2 |
--------------------
| 1.00 | 1 |
| 2.00 | 2 |
| 3.00 | 3 |
SET TERM /;
CREATE OR ALTER PROCEDURE TEST
RETURNS (VARIABLE1 DOUBLE PRECISION, VARIABLE2 INTEGER)
AS
BEGIN
SELECT FIELD1, FIELD2 FROM TABLE INTO :VARIABLE1, :VARIABLE2;
END/
EXECUTE PROCEDURE TEST/
SET TERM ;/
Unter der Annahme, die Abfrage mehr als ein Ergebnis/Zeile zurückgibt, wird der folgende Fehler ausgelöst:
Statement ist fehlgeschlagen, SQLCODE = -811
Mehrere Zeilen in Singleton wählen
Offensichtlich erlaubt die Firebird-Engine mir nicht, mehr als einen Wert in einer Variablen zurückzugeben. Ich entwickle eine Python-Software, wo ich als Tupel zum Beispiel so etwas [(1.00, 1), (2.00, 2), (3.00, 3)] bekommen möchte, basierend auf der Prozedur TEST. Ich verwende das Modul kinterbasdb, um eine Verbindung mit der GDB herzustellen.
Gibt es eine Möglichkeit, das zu tun?
Bitte überprüfen http://stackoverflow.com/questions/34900648/how-to-execute-procedure-returning-resultset-in-firebird – Tajinder
Aus Neugier : warum benutzt du immer noch kinterbasdb? Es wurde durch Treiber wie [FDB] (https://pypi.python.org/pypi/fdb/) und [firebirdsql] (https://pypi.python.org/pypi/firebirdsql) ersetzt. –