Procedure or function has too many arguments specified when using SqlDataSource with Stored Procedure

泄露秘密 提交于 2019-12-12 04:48:53

问题


I want to update two tables using SqlDataSource. The control I am using is Gridview. I have a stored procedure. But I am getting error :

Procedure or function has too many arguments specified

I know my question is repeated but I have tried many solution yet my problem is not solved. Here is my SqlDataSource code:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:IHDConnectionString %>" 
            SelectCommand="SELECT issue.issue_id, issue.pro_id, project.name, issue.type, issue.summary, issue.mem_id, issue.priority, issue.status, issue.impact, CONVERT (date, GETDATE()) AS Expr1, issue.Name AS Expr2, contact.cust_name, contact.ph_no, contact.time, time_frame.Estmtd_Hrs, time_frame.Hrs_Spent, time_frame.internal_status FROM issue INNER JOIN project ON issue.pro_id = project.pro_id INNER JOIN contact ON issue.issue_id = contact.issue_id INNER JOIN time_frame ON issue.issue_id = time_frame.issue_id" 
            UpdateCommand="UpdateTwoTables" UpdateCommandType="StoredProcedure">

Here is my update parameters

<UpdateParameters>
                <asp:Parameter Name="mem_id" Type="String" />
                <asp:Parameter Name="priority" Type="String" />
                <asp:Parameter Name="status" Type="String" />
                <asp:Parameter Name="hrs" Type="String" />
                <asp:Parameter Name="i_status" Type="String" />
                <asp:Parameter Name="issue_id" Type="Int32" />
            </UpdateParameters>

Here is my stored Procedure:

PROCEDURE [dbo].[UpdateTwoTables]
       (
       @mem_id varchar(20),
       @priority varchar(30),
       @status varchar(20),
       @hrs varchar(20),
       @i_status varchar(30),
       @issue_id int
       )
AS
       BEGIN

       UPDATE [issue] SET  [mem_id] = @mem_id, [priority] = @priority, [status] = @status WHERE [issue_id] = @issue_id
       UPDATE time_frame SET Estmtd_Hrs=@hrs, internal_status=@i_status where issue_id=@issue_id

       END
       RETURN

I have also tried a solution which is on SqlDataSource update event below is code:

 protected void SqlDataSource1_Updating(object sender, SqlDataSourceCommandEventArgs e)
    {
        DbParameterCollection CmdParams = e.Command.Parameters;
        ParameterCollection UpdParams = ((SqlDataSourceView)sender).UpdateParameters;

        Hashtable ht = new Hashtable();
        foreach (Parameter UpdParam in UpdParams)
            ht.Add(UpdParam.Name, true);

        for (int i = 0; i < CmdParams.Count; i++)
        {
            if (!ht.Contains(CmdParams[i].ParameterName.Substring(1)))
                CmdParams.Remove(CmdParams[i--]);
        }
    }

The above code removed my error but only update 1 table second table is not updating. Please anyone help me. Thanks

来源:https://stackoverflow.com/questions/45004869/procedure-or-function-has-too-many-arguments-specified-when-using-sqldatasource

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!