1

RPG 関係者から、6 つのデータ テーブルを返す「ストアド プロシージャ」が提供されています。iSeries Provider for .NET を使用して .NET (C#、3.5) から呼び出そうとすると (V5R4 と V6R1 の両方を使用して試行)、ストアド プロシージャの呼び出し方法に基づいて異なる結果が表示されます。これが私たちがそれを行うことを好む方法です:

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);
    }
}

このようにすると、結果セットに 5 つのテーブルが返されますただし、これを行うと:

cmd.CommandType = CommandType.Text;
cmd.CommandText = "CALL StoredProcName('" + thing + "')";

期待されるSIXテーブルが返されます。

申し訳ありませんが、.NET から DB2 に移行する人はあまりいないと思いますが、誰かがこれを以前に見たことがあることを願っています。

ティア。

4

1 に答える 1

1

接続文字列の LibraryList (およびおそらく Naming) プロパティを調べます。CommandType.StoredProcedure を使用すると、ストアド プロシージャが SQL データベース ライブラリから直接実行される可能性があります。CommandType.Text を使用すると、ライブラリ リストを検索してストアド プロシージャを見つけます。さまざまなライブラリからさまざまなバージョンのストアド プロシージャを実行することになり、さまざまな結果が得られます。

于 2010-05-22T11:19:57.647 に答える