oracle索引超出界限,Oracle.ManagedDataAccess.DLL出现异常,索引超出了数组界限。

1 //Oracle.ManagedDataAccess.Client.OracleDataReader

2 internalDataTable GetMinSchemaTable()3 {4 if(ProviderConfig.m_bTraceLevelPrivate)5 {6 Trace.Write(OracleTraceLevel.Private, OracleTraceTag.Entry, new string[0]);7 }8 DataTable result;9 try

10 {11 if (this.m_readerImpl == null || this.m_readerImpl.m_sqlMetaData == null)12 {13 result = null;14 }15 else

16 {17 DataTable dataTable = null;18 if (this.m_sqlStatementType !=SqlStatementType.SELECT)19 {20 if (this.m_refCursor != null)21 {22 RefCursorInfo refCursorInfo = this.m_refCursor.m_refCursorInfo;23 if (refCursorInfo != null && refCursorInfo.columnInfo.Rows.Count > 0)24 {25 dataTable =refCursorInfo.columnInfo;26 }27 }28 else

29 {30 ConfigBaseClass.StoredProcedureInfo storedProcInfo = ConfigBaseClass.GetInstance(true).GetStoredProcInfo(this.m_storedProcName);31 if (storedProcInfo != null)32 {33 dataTable = storedProcInfo.GetColumnInfo(this.m_readerImpl.m_currentRefCursorIndex);34 }35 }36 }37 DataTable dataTable2 = new DataTable("MinSchemaTable");38 this.PopulateMetaData(false);39 dataTable2.MinimumCapacity = this.m_fieldCount;40 if (this.m_sqlStatementType !=SqlStatementType.SELECT)41 {42 dataTable2.ExtendedProperties["REFCursorName"] = ((this.m_readerImpl.m_currentRefCursorIndex == 0) ? "REFCursor" : ("REFCursor" + this.m_readerImpl.m_currentRefCursorIndex));43 }44 dataTable2.Columns.Add("ColumnName", typeof(string));45 dataTable2.Columns.Add("BaseColumnName", typeof(string));46 dataTable2.Columns.Add("BaseTableName", typeof(string));47 dataTable2.Columns.Add("OraDbType", typeof(OracleDbType));48 dataTable2.Columns.Add("BaseSchemaName", typeof(string));49 ColumnLocalParsePrimaryKeyInfo columnLocalParsePrimaryKeyInfo =ColumnLocalParsePrimaryKeyInfo.Null;50 bool flag = this.m_readerImpl.m_sqlMetaData.m_sqlMetaInfo != null && this.m_readerImpl.m_sqlMetaData.m_sqlMetaInfo.m_columnMetaInfo != null;51 for (int i = 0; i < this.m_fieldCount; i++)52 {53 DataRow dataRow =dataTable2.NewRow();54 ColumnDescribeInfo columnDescribeInfo = this.m_readerImpl.m_sqlMetaData.m_columnDescribeInfo[i];55 if(flag)56 {57 columnLocalParsePrimaryKeyInfo = this.m_readerImpl.m_sqlMetaData.m_sqlMetaInfo.m_columnMetaInfo[i];58 }59 dataRow[0] =columnDescribeInfo.pColAlias;60 dataRow[1] =columnLocalParsePrimaryKeyInfo.m_columnName;61 dataRow[2] =columnLocalParsePrimaryKeyInfo.pTabName;62 dataRow[3] = this.GetOraDbType(i);63 dataRow[4] =columnLocalParsePrimaryKeyInfo.m_schemaName;64 if (this.m_sqlStatementType != SqlStatementType.SELECT && dataTable != null)65 {66 object obj = dataTable.Rows[i]["ColumnName"];67 if (obj != null && obj !=DBNull.Value)68 {69 dataRow[0] = (string)obj;70 }71 object obj2 = dataTable.Rows[i]["BaseColumnName"];72 if (obj2 != null && obj2 !=DBNull.Value)73 {74 dataRow[1] = (string)obj2;75 }76 object obj3 = dataTable.Rows[i]["BaseTableName"];77 if (obj3 != null && obj3 !=DBNull.Value)78 {79 dataRow[2] = (string)obj3;80 }81 object obj4 = dataTable.Rows[i]["ProviderType"];82 if (obj4 != null && obj4 !=DBNull.Value)83 {84 dataRow[3] =(OracleDbType)obj4;85 }86 object obj5 = dataTable.Rows[i]["BaseSchemaName"];87 if (obj5 != null && obj5 !=DBNull.Value)88 {89 dataRow[4] = (string)obj5;90 }91 object obj6 = dataTable.Rows[i]["UdtTypeName"];92 if (obj6 != null && obj6 !=DBNull.Value)93 {94 dataRow[5] =obj6;95 }96 }97 dataTable2.Rows.Add(dataRow);98 }99 dataTable2.AcceptChanges();100 result =dataTable2;101 }102 }103 catch(Exception ex)104 {105 OracleException.HandleError(OracleTraceLevel.Private, OracleTraceTag.Error, ex, null);106 throw;107 }108 finally

109 {110 if(ProviderConfig.m_bTraceLevelPrivate)111 {112 Trace.Write(OracleTraceLevel.Private, OracleTraceTag.Exit, new string[0]);113 }114 }115 returnresult;116 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值