Итак, во-первых, извините за длину вопроса ...
Так что в основном у меня возникают проблемы с вызовом хранимого процесса из базы данных Informix, где хранимый процесс имеет несколько возвращаемых значений при использовании ODBCв .NET (он же ODBCCommand), и я не видел в интернете ничего такого, где кто-то делал бы это раньше ... так возможно ли это?
Итак, начнем с использования ODBCCommand (или ODBCв общем) для вызова SP, который должен использовать ODBC Call Syntax .
Грубая хранимая процедура:
create procedure informix.proc_ins (
n_company char(10),
n_message_body lvarchar(4096),
n_time int,
n_time_dt datetime year to second,
n_processed smallint)
returning
int,
int;
begin
define row_count int;
define new_serial int;
INSERT into my_table ( company, message_body, time, time_dt, processed, create_user, create_dt, recmod_user, recmod_dt)
VALUES ( n_company, n_message_body, n_time, n_time_dt, n_processed, USER, CURRENT YEAR TO SECOND, USER, CURRENT YEAR TO SECOND);
let new_serial = DBINFO('sqlca.sqlerrd1');
let row_count = DBINFO('sqlca.sqlerrd2');
return
new_serial,
row_count;
end
end procedure;
Итак, с учетом этого SP синтаксис вызова ODBC будет выглядеть примерно так:
{XXXX = call informix.proc_ins(?,?,?,?,?)}
, где у 'XXXX' почему-то есть 2 '?s ...?
Любая помощь в этом была бы очень признательна.
Также, прежде чем кто-то скажет "использовать драйверы IBM.Data.Informix" (любой из них), это невозможнов этом случае, потому что «старый» не работает с VS2010, а новый нельзя установить на тот же ПК, что и старый, в одно и то же время, но это совершенно другой трюк для другого дня.