Все просто - есть ли способ использовать эту библиотеку для вызова хранимой процедуры или функции, которая возвращает более одного результата?Я знаю о ITRoutingManager
, но, похоже, он возвращает только одно значение ..
Подробно, вот что я имею в виду:
CREATE FUNCTION test_out1( pin INT )
RETURNING INT;
DEFINE param INT;
LET param = 321;
RETURN param;
END FUNCTION;
Возвращает 321
, я могу получитьзначение с ITValue
и ITConversions
.Так что это нормально.Но следующее не так:
CREATE FUNCTION test_out2( pin INT )
RETURNING INT, INT;
DEFINE param INT;
LET param = 321;
DEFINE param2 INT;
LET param2 = 123;
RETURN param, param2;
END FUNCTION;
Когда я делаю routine.GetRoutine( "function test_out2( int )" )
, это нормально, так что никаких проблем с этим нет.Но посмотрите на это:
std::cout << "Result type: " << routine.ResultType()->Name() IsRow() ? "row, " : ", " )
<< (routine.ResultType()->IsCollection() ? "collection, " : ", " )
<< routine.ResultType()->Quality() << "\n\n";
печатает integer, , , null
, обратите внимание на целое число .. Почему, например, целое число, а не строка.И как получить 2 значения, возвращаемые функцией ?Еще один интересный факт - возвращаемое значение равно 0 (когда я конвертирую его в int
, используя класс ITConversions
), а не 123 или 321 ..
Должно бытьдалеко.Это специальная библиотека, написанная для серверов Informix разработчиками Informix, и было бы странно, если бы это было невозможно.
То же самое для функций, но я думаю, что там то же самое.
ПРИМЕЧАНИЕ: в общем случае нет параметров out для параметров / функций informix ( Informix: процедура с выходными параметрами? )