C# Ar主题运算符溢出Oracle ODP.NET

C# Ar主题运算符溢出Oracle ODP.NET,c#,.net,oracle,plsql,odp.net,C#,.net,Oracle,Plsql,Odp.net,下面的查询在Oracle中作为内联查询运行时运行良好,但当我使用ODP.NET与.NET一起使用时,会出现arthematic运算符溢出。我不确定从.net运行oracle data adapter时为什么会出现arthmatic运算符溢出 select project_asset.project_id, project_asset.asset_id, asset_crv_v.crv$ crv, asset_crv_v.crv_percent crv_per

下面的查询在Oracle中作为内联查询运行时运行良好,但当我使用ODP.NET与.NET一起使用时,会出现arthematic运算符溢出。我不确定从.net运行oracle data adapter时为什么会出现arthmatic运算符溢出

 select project_asset.project_id,
      project_asset.asset_id,
      asset_crv_v.crv$ crv,
      asset_crv_v.crv_percent crv_percent,
      project_asset.expected_useful_life,
      asset.mf_division_id,
      mfdivision.code_desc division_description,
      project_asset.update_asset_base_year_flag,
      sumcost.assetbudgetcost budget_cost,
      sumCost.assetActualCost actual_cost
      from RECAPT.project_asset,
      RECAPT.asset,
      RECAPT.asset_crv_v,
      RECAPT.reference_detail mfdivision,
      (select  project_asset.project_id,
      project_asset.asset_id,
      (nvl(sum(project_asset_mfcode.budget_cost), 0)) assetbudgetcost,
      (nvl(sum(project_asset_mfcode.actual_cost), 0)) assetActualCost
      from RECAPT.project_asset,
      RECAPT.project_asset_mfcode,
      RECAPT.reference_detail mfcode
      where  project_asset.project_id = project_asset_mfcode.project_id(+)
      and project_asset.asset_id = project_asset_mfcode.asset_id(+)
      and project_asset.project_id = 'AMB-Lifecycle-2014'
      and mfcode.id = project_asset_mfcode.mf_code_id
      group by
      project_asset.project_id,
      project_asset.asset_id
      ) sumCost
      where project_asset.project_id = 'AMB-Lifecycle-2014'
      and project_asset.asset_id = asset.id
      and asset.id = asset_crv_v.id(+)
      and mfdivision.id = asset.mf_division_id
      and sumcost.project_id = project_asset.project_id
      and sumcost.asset_id = project_asset.asset_id
      order by project_asset.asset_id
执行查询的C#方法

 public ProjectDetailAssetCollection Retrieve(ProjectDetailAssetFilterType criteria, OracleConnection oracleConnection)
        {
            var result = new ProjectDetailAssetCollection();
            var parameters = new List<OracleParameter>();

            if (!string.IsNullOrEmpty(criteria.ProjectId))
            {
                parameters.Add(new OracleParameter("p_project_id", criteria.ProjectId));
            }

            DataSet dataSetResults = SharedCodeDA.ExecuteDataSetLeaveConnectionOpen("RetrieveProjectDetailAssets",
                                                                                    oracleConnection, parameters);
            if (dataSetResults.Tables[0].Rows.Count > 0)
            {
                // only allow maximum 500 records to return
                int maxRow = dataSetResults.Tables[0].Rows.Count > SharedCodeDA.MaxRowReturn ? 
                    SharedCodeDA.MaxRowReturn : dataSetResults.Tables[0].Rows.Count;

                for (int i = 0; i < maxRow; i++)
                {
                    DataRow assetFromDatabase = dataSetResults.Tables[0].Rows[i];
                    ProjectDetailAssetType projectDetailAsset = PopulateProjectDetailAssetDEM(assetFromDatabase);
                    result.Add(projectDetailAsset);
                }
            }

            return result;
        }

  public static DataSet ExecuteDataSetLeaveConnectionOpen(OracleCommand command, OracleConnection connection, 
            List<OracleParameter> parameters = null)
        {            
            if (parameters != null)
            {
                //Added by Danny Ho - this is necessary in order to resolve issue with parameterized values 
                //that are not in the same order as the SQL
                command.BindByName = true;
                foreach (OracleParameter item in parameters)
                {
                    command.Parameters.Add(item);
                }
            }

            if (connection != null && (connection.State == ConnectionState.Closed || connection.State != ConnectionState.Open))
            {
                connection.Open();
            }

            OracleDataAdapter dataAdapter = new OracleDataAdapter(command);
            DataSet dataSet = new DataSet();
            dataAdapter.Fill(dataSet);
            command.Parameters.Clear();

            dataAdapter.Dispose();
            command.Parameters.Clear();
            command.Dispose();

            return dataSet;
        }
公共ProjectDetailAssetCollection检索(ProjectDetailAssetFilterType条件、OracleConnection或OracleConnection) { var result=new ProjectDetailAssetCollection(); var参数=新列表(); 如果(!string.IsNullOrEmpty(criteria.ProjectId)) { parameters.Add(新的OracleParameter(“p_project_id”,criteria.ProjectId)); } DataSet dataSetResults=SharedCodeDA.ExecuteDataSetLeaveConnectionOpen(“RetrieveProjectDetailAssets”, oracleConnection,参数); 如果(dataSetResults.Tables[0].Rows.Count>0) { //最多只允许返回500条记录 int maxRow=dataSetResults.Tables[0].Rows.Count>SharedCodeDA.maxrrowReturn? SharedCodeDA.MaxRowReturn:dataSetResults.Tables[0].Rows.Count; 对于(int i=0;i请向我们展示您的C#代码我添加了两个调用方法请格式化您的查询并用ANSI语法替换
(+)
连接。查询很难阅读。通过舍入asset_crv_v.crv$crv、asset_crv_v.crv_percent crv_percent crv_percent解决了这个问题,它是30位小数,但问题仍然是如何在中容纳它。请向我们展示您的C代码。我添加了两种方法,用于调用请格式化您的查询并替换
(+)
使用ANSI语法连接。查询很难阅读。通过舍入asset_crv_v.crv$crv、asset_crv_v.crv_percent crv_percent crv_percent(小数点后30位)解决了此问题,但问题仍然是如何在.net中容纳此值