было интересно, если это возможно, чтобы вернуть более одной строки, найденный в SELECT
запрос в Firebird 1.5, как показано ниже:Возможно ли вернуть несколько строк в хранимую процедуру Firebird?
| 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 ;/
Предполагая, что запрос возвращает более одного результата/строки, следующая ошибка возникает:
себе не удалось, SQLCODE = -811
Несколько строк в одноэлементных выберите
Очевидно, что механизм Firebird не позволяет мне возвращать более одного значения в переменной. Я разрабатываю программное обеспечение Python, где я хочу получить, например, кортеж, что-то вроде этого [(1.00, 1), (2.00, 2), (3.00, 3)] на основе процедуры TEST. Я использую модуль kinterbasdb для подключения к GDB.
Есть ли способ сделать это?
Пожалуйста, проверьте http://stackoverflow.com/questions/34900648/how-to-execute-procedure-returning-resultset-in-firebird – Tajinder
Из любопытства : почему вы все еще используете kinterbasdb? Он был заменен такими драйверами, как [FDB] (https://pypi.python.org/pypi/fdb/) и [firebirdsql] (https://pypi.python.org/pypi/firebirdsql). –