Использование выходных параметров для получения значения из Informix - PullRequest
2 голосов
/ 17 января 2011

Мне нужно выполнить запрос к базе данных 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 ();это также не вариант, поскольку используемая среда требует использования выходных параметров.

...