Nous avons reçu une "procédure stockée" de la part de nos employés RPG qui renvoie six tables de données. En essayant de l'appeler à partir de .NET (C#, 3.5) en utilisant le fournisseur iSeries pour .NET (essayé en utilisant à la fois V5R4 et V6R1), nous voyons des résultats différents basés sur la façon dont nous appelons le proc stocké. Voici manière que nous préférons le faire:Comportement très étrange du fournisseur iSeries
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);
}
}
En procédant ainsi, nous obtenons CINQ tables de retour dans le jeu de résultats. Cependant, si nous faisons cela:
cmd.CommandType = CommandType.Text;
cmd.CommandText = "CALL StoredProcName('" + thing + "')";
Nous rapportiez les attendus SIX tables.
Je me rends compte qu'il n'y a pas beaucoup d'entre nous sorry folks .NET-à-DB2 ici, mais je suis en espérant que quelqu'un a vu cela auparavant.
TIA.
Merci! Nous ne faisons pas l'expérience de cela, mais c'est certainement quelque chose à surveiller et agréable d'être au courant. – David