C# OracleDataAdapter访问批插入的返回值
我正在使用Oracle.DataAccess.Client.OracleDataAdapter将行批插入到我们的系统中,批大小为250。我们需要为发生的每个插入使用批插入返回的值。适配器的创建方式如下:C# OracleDataAdapter访问批插入的返回值,c#,sql,oracle,C#,Sql,Oracle,我正在使用Oracle.DataAccess.Client.OracleDataAdapter将行批插入到我们的系统中,批大小为250。我们需要为发生的每个插入使用批插入返回的值。适配器的创建方式如下: OracleDataAdapter adapter = MakeMyAdapter(cn, table.TableName); adapter.UpdateBatchSize = 250; adapter.RowUpdated += new OracleRowUpdatedEventHandle
OracleDataAdapter adapter = MakeMyAdapter(cn, table.TableName);
adapter.UpdateBatchSize = 250;
adapter.RowUpdated += new OracleRowUpdatedEventHandler(adapter_Table_RowUpdated);
adapter.Update(table);
其中table
是一个DataTable
,其中包含我们要插入的行(正确命名为我们要插入的oracle表)
cn
是已建立oracle连接的IDbConnection
在MakeMyAdapter
中,将适配器.InsertCommand
设置为新的OracleCommand
,设置表映射等。根据插入的表动态生成插入。但本质上是
insert into myFirstTable (myPK, col1, col2) VALUES (mySequence.nextVal, :val1, :val2) returning myPK into :myReturnValue;
调用适配器\u Table\u RowUpdated处理程序时,我们会得到一个OracleRowUpdatedEventArgs(我们称之为“e”))。
e.Command
似乎是最后一个运行命令。如果我检查该命令,它有一组参数,这些参数与提供的数据表中的最后一行一致,但是命令上的myReturnValues
参数为空,我看不到从事件中获取所有不同myReturnValues
的方法。我已经看过了执行e.CopyToRows
,但这看起来是来自DataTable的输入行,而不是命令的结果(这很有意义)
我的问题是:这是使用OracleDataAdapter
s支持的解决方案吗?我应该能够从或clerowUpdatedEventargs
中获取所有行的单个返回值吗?如果是,如何获取