我们的 RPG 人员给了我们一个“存储过程”,它返回六个数据表。尝试使用 iSeries Provider for .NET(尝试使用 V5R4 和 V6R1)从 .NET(C#,3.5)调用它,根据我们调用存储过程的方式,我们看到了不同的结果。这是我们更喜欢这样做的方式:
using (var dbConnection = new iDB2Connection("connectionString"))
{
dbConnection.Open();
using(var cmd = dbConnection.CreateCommand())
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "StoredProcName";
cmd.Parameters.Add(new iDB2Parameter("InParm1",
iDB2DbType.Varchar).Value = thing;
var ds = new DataSet();
var da = new iDB2DataAdapter(cmd);
da.Fill(ds);
}
}
这样做,我们在结果集中得到了五个表。但是,如果我们这样做:
cmd.CommandType = CommandType.Text;
cmd.CommandText = "CALL StoredProcName('" + thing + "')";
我们得到了预期的六张桌子。
我意识到我们当中没有多少人对不起 .NET-to-DB2 的人在这里,但我希望有人以前见过这个。
TIA。