質問

6つのデータテーブルを返すRPGの人々から「ストアドプロシージャ」が与えられました。 .NETのiSeriesプロバイダー(V5R4とV6R1の両方を使用した)を使用して.NET(C#、3.5)からそれを呼び出そうとすると、貯蔵されたProcと呼ばれる方法に基づいて異なる結果が見られます。これが私たちがそれをすることを望む方法です:

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の人々はいないことを理解していますが、誰かがこれを見たことがあることを望んでいます。

ティア。

役に立ちましたか?

解決

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top