来自C#的ODBC和DB2存储过程:找不到例程

在运行存储过程时,我似乎遇到了ODBC和DB2的一个缺点.似乎不可能从存储过程返回数据,并且我有一个需要使用的预先存在的查询.有没有人解决这个特定问题?

提前致谢

更新资料

我正在调用的代码如下(假设连接已经打开):

string BaseSQL = "CALL B6009822.O#04666803.PUT";

OdbcCommand command = new OdbcCommand(BaseSQL, myConnection);
command.CommandType = CommandType.StoredProcedure;

command.Parameters.Add("@Owner", OdbcType.VarChar).Value = "MH";

int rows = command.ExecuteNonQuery();

myConnection.Close();

我收到以下错误..

ERROR [HY000] [IBM][System i Access ODBC Driver][DB2 for i5/OS]SQL0440 - Routine PUT in O#04666803 not found with specified parameters.

它似乎反对目录/库和过程名称.我需要做什么才能知道该程序吗?

第二次更新-真实示例

string BaseSQL = "{ CALL B6009822.O#04666803.PUT(?,?,?,?,?,?,?,?,?) }";

OdbcCommand command = myConnection.CreateCommand();
command.CommandText = BaseSQL;

//OdbcCommand command = new OdbcCommand(BaseSQL, myConnection);
command.CommandType = CommandType.StoredProcedure;

/*
@Param1 VarChar(4), @Param2 dec(8,0), 
@Param3 dec(4,0), @Param4 dec(8,0),      
@Param5 VarChar(60), @Param6 dec(9,2), 
@Param7 dec(9,0), @Param8 dec(9,2), 
@Param9 VarChar(10))                
 */

command.Parameters.Add("@Param1", OdbcType.VarChar, 4).Value = "MH";
command.Parameters.Add("@Param2", OdbcType.Decimal, 8).Value = 20110217;
command.Parameters.Add("@Param3", OdbcType.Decimal, 4).Value = 1;
command.Parameters.Add("@Param4", OdbcType.Decimal, 8).Value = 178377;
command.Parameters.Add("@Param5", OdbcType.VarChar, 60).Value = "Description";
command.Parameters.Add("@Param6", OdbcType.Decimal, 9).Value = 0;
command.Parameters.Add("@Param7", OdbcType.Decimal, 9).Value = 45;
command.Parameters.Add("@Param8", OdbcType.Decimal, 9).Value = 0;
command.Parameters.Add("@Param9", OdbcType.VarChar, 10).Value = "*CREATE";

int rows = command.ExecuteNonQuery();

myConnection.Close();

解决方法:

您是否尝试过CALL语法?

http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/index.jsp?topic=/com.ibm.db29.doc.odbc/db2z_odbcspcall.htm

编辑:以防万一我上面的评论是正确的:

从这个resource,您是否尝试过:

string BaseSQL = "CALL B6009822.O#04666803.PUT (?)";

Important: Unlike ODBC, DB2 ODBC does
not support literals as procedure
arguments. You must use parameter
markers to specify a procedure
parameter.

上一篇:如何在RODBC中为MySQL设置字符集?


下一篇:c#-“未找到数据源名称且未指定默认驱动程序”用于创建访问连接