Мне нужно выполнить запрос к базе данных Informix, используя выходные параметры для получения желаемого значения.Я пробовал много разных вариантов запроса, но до сих пор ни один не работал.Единственные примеры, которые я видел в документации, использовали хранимые процедуры для получения результата, но хранимая процедура в этом случае не подходит.
Соответствующий код из того, что я пытаюсь сделать, это:
DB2Connection con = new DB2Connection(ConStr);
DB2Command cmd = con.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "select ? = Column1 from Table1 where Table1.serial = 1";
cmd.Parameters.Add("param", DB2Type.Integer).Direction = ParameterDirection.Output;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
object o = cmd.Parameters["param"].Value;
Это тот же запрос, который я использую для SQL Server, поскольку я не уверен в правильном синтаксисе для Informix
Я использую:
Visual Studio 2010
.NET Framework 2.0
Informix 11.5 (драйвер DB2, IBM.Data.DB2.dll)
Тот же метод, который я использовал для работы с Oracle и MS SQL Server, изменив запрос и используяих соответствующий драйвер ado.net
Oracle:
cmd.CommandType = CommandType.Text;
cmd.CommandText = "BEGIN select Column1 INTO :param from Table1 where Table1.serial = 1; END;";
cmd.Parameters.Add(":param ", OracleDbType.Int32).Direction = ParameterDirection.Output;
SQL Server:
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT @param = Column1 from Table1 where Table1.serial;";
cmd.Parameters.Add("@param", SqlDbType.Int).Direction = ParameterDirection.Output;
Кто-нибудь знает, возможно ли это с informix без использования хранимых процедур?cmd.ExecuteScalar ();это также не вариант, поскольку используемая среда требует использования выходных параметров.