0
我正在使用ODP.NET編寫遠程Oracle DB和本地Oracle XE DB之間的某種同步機制。我正在同步的表有一個空間列(因此是一個用戶定義類型,sdo_geometry)。我在C#中的邏輯在遠程數據庫上進行選擇,循環遍歷OracleDataReader的結果並將結果插入本地數據庫。Oracle UDT(SdoGeometry)插入DBNull.Value失敗
這就像一個魅力,但在空間列的值是DBNull.Value插入失敗此消息:
Object reference not set to an instance of an object.
at Oracle.DataAccess.Client.OracleParameter.PostBind_OracleObject(OracleConnection conn)
at Oracle.DataAccess.Client.OracleParameter.PostBind(OracleConnection conn, OpoSqlValCtx* pOpoSqlValCtx, Int32 arraySize)
at Oracle.DataAccess.Client.OracleCommand.ExecuteNonQuery()
at Gwr.Bsb.Oli.Framework.Helpers.SynchronizationHelper.TryModifyData(OracleCommand cmd)
代碼看起來是這樣的:
var parameter = new OracleParameter(parameterName, OracleDbType.Object);
parameter.OracleDbType = OracleDbType.Object;
parameter.UdtTypeName = "MDSYS.SDO_GEOMETRY";
parameter.Direction = ParameterDirection.InputOutput;
parameter.Value = reader[i];
正如我早些時候說。當存在空間值時,代碼工作得很好。但是,當閱讀器[i]的值爲DBNull.Value ...
任何想法?