多个返回值的ODBC调用语法

时间:2011-09-29 13:18:27

标签: .net odbc informix

首先,对不起问题的长度......

所以基本上我遇到了从Informix数据库调用存储过程的问题,其中存储的proc有多个返回值,而在.NET中使用ODBC(又名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,而新的不能用于VS2010同时安装在与旧PC相同的PC上,但这是另一天完全不同的咆哮。

2 个答案:

答案 0 :(得分:0)

我在ESQL / C中这样做的方法是将EXECUTE PROCEDURE informix.proc_ins(...)语句看作是一个SELECT语句 - 也就是说,声明一个游标(可能在准备语句之后),然后使用OPEN (传递参数的机会)和FETCH和CLOSE来获取数据。

我希望在ODBC中使用相同的技术 - 可能绕过通用的ODBC调用语法。

如果您需要使用官方ODBC表示法/方法的正式答案,则必须让其他人提供答案。

答案 1 :(得分:0)

我不相信有一个“官方”的ODBC答案。它归功于司机。没有什么能阻止你使用SQL_PARAM_RETURN作为多个参数的类型,但是关于如何调用它,ODBC并没有说。