【问题标题】:how to get dataset value from store procedure for oracle in c#如何从 C# 中的 oracle 存储过程中获取数据集值
【发布时间】:2014-11-01 07:46:12
【问题描述】:

我的 sp 在光标中返回表,但我在映射数据集时出错

DataSet ds = new DataSet();

command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("Size", OracleDbType.Int16).Value = size
command.Parameters.Add("Index", OracleDbType.Int16).Value = Index;
command.Parameters.Add("Data", OracleDbType.RefCursor).Direction = ParameterDirection.Output;

OracleDataAdapter da = new OracleDataAdapter(command);
da.Fill(ds);
return ds;

但我遇到以下错误:
如何映射它

[InvalidOperationException:由于对象的当前状态,操作无效。] System.Web.UI.WebControls.ListControl.OnSelectedIndexChanged(EventArgs e) +130 System.Web.UI.Page.RaiseChangedEvents() +105 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3572

【问题讨论】:

  • 如何记录这个 sp 正在返回?
  • 有 100 条记录的表
  • 我询问了记录,因为错误的可能性之一可能是由于 MaxHttpCollection 取决于记录的数量。无论如何,现在我们可以知道您的代码在哪一行出现错误吗?
  • @Dnyanesh 我在 da.fill(ds) 上遇到错误

标签: c# oracle ado.net


【解决方案1】:

[InvalidOperationException:由于对象的当前状态,操作无效。]

此异常有多种可能性。

1) command.CommandText = *Your Sp's name will go here*; 看起来您的代码中缺少。如果缺少,请提供 CommandText。

2) 可能是因为 web.config 中的MaxHttpCollection 设置。默认情况下它可以容纳 1000。在您的 web.config 中添加以下设置。

<appSettings>
    <add key="aspnet:MaxHttpCollectionKeys" value="2001" />
</appSettings> 

希望这能解决您的问题。

【讨论】:

    猜你喜欢
    • 2016-10-21
    • 1970-01-01
    • 2010-11-13
    • 2013-08-01
    • 2022-08-24
    • 1970-01-01
    • 1970-01-01
    • 2012-02-11
    • 2017-02-21
    相关资源
    最近更新 更多