我有直接测试存储过程和它的作品,但是当我从代码中调用它,我得到的错误:错误与存储过程(参数有关)
“过程或函数editItem已经指定的参数太多“
有人可以告诉我为什么会发生这种错误吗?是否因为我的sqlDataSource从BIND传递参数,存储过程不需要?我以为存储过程忽略了额外的参数。
感谢
编辑:下面是一些有关该问题的更多信息。它让我感到困惑。基本上,我有一堆项目添加到模板,如下所示:
<EditItemTemplate>
<asp:TextBox runat="server" ID="tbEditItemDescription" Text='<%# Bind("itemDescription") %>'></asp:TextBox>
</EditItemTemplate>
现在据我所知,Bind自动提供参数。我也有5个参数我手动添加,像这样:
<UpdateParameters>
<asp:ControlParameter DbType="Int16" Name="itemTypeId" ControlID="dvIndividualItem$ddlItemTypes"
PropertyName="SelectedValue" />
<asp:ControlParameter DbType="Int16" Name="itemSubTypeId" ControlID="dvIndividualItem$ddlItemSubTypes"
PropertyName="SelectedValue" />
<asp:ControlParameter DbType="Int64" Name="itemSubSubTypeId" ControlID="dvIndividualItem$ddlItemSubSubTypes"
PropertyName="SelectedValue" />
<asp:ControlParameter DbType="Int16" Name="numberOfTurns" ControlID="dvIndividualItem$tbEditEffectTurns"
PropertyName="Text" />
<asp:ControlParameter DefaultValue="0" DbType="Int64" Name="itemId" ControlID="gvItems"
PropertyName="SelectedDataKey.Value" />
现在,当我调试SQL数据源,我发现,它实际上只具有5个参数(ⅰ手动添加的那些)。当它实际上具有比它需要的LESS参数更多的参数时,它怎么可能会给我一个错误的参数?或者我只是看错了地方?我查看了UpdateParameters ==> base ==> count,其中包含5.
感谢您的帮助。
这将是更容易帮助,如果你发布的代码。 –
我们可以看到你如何调用sproc吗?额外的参数是不允许的,因为你已经发现:)。如果您正在重新使用某个命令,请在添加参数之前执行.Parameters.Clear()。 – DaveHogan
http://forums.asp.net/t/1000526.aspx/1 –