过程或函数uspSetSubscriptions指定了太多参数。 [英] Procedure or function uspSetSubscriptions has too many arguments specified.

查看:142
本文介绍了过程或函数uspSetSubscriptions指定了太多参数。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

I am Working on my project, And frustrated to solve this error. " Procedure or function uspSetSubscriptions has too many arguments specified". If any one knows please help.







protected void BtnSubscribe_Click(object sender, EventArgs e)
    {
        //Response.Write(AppUserID); 
        //Response.Write(Convert.ToString(ViewState["packtype"]));
        //Response.Write(DDConstituency.SelectedValue);
        try
        {
            db1.sqlcmd = new SqlCommand("uspSetSubscriptions");
            using (SqlDataAdapter sda = new SqlDataAdapter())
            {
db1.sqlcmd.CommandType = CommandType.StoredProcedure;
db1.sqlcmd.Parameters.Clear();
db1.sqlcmd.Parameters.AddWithValue("@UserID", Convert.ToInt32(AppUserID));
db1.sqlcmd.Parameters.AddWithValue("@packageType", Convert.ToString(ViewState["packtype"]));
db1.sqlcmd.Parameters.AddWithValue("@Cost", Convert.ToDouble(ViewState["packagecost"]));
db1.sqlcmd.Parameters.AddWithValue("@MaxNotific", Convert.ToInt32(ViewState["mxnotificaton"]));
db1.sqlcmd.Parameters.AddWithValue("@MaxVideos", Convert.ToInt32(ViewState["mxvidoes"]));
db1.sqlcmd.Parameters.AddWithValue("@MaxArticles", Convert.ToInt32(ViewState["mxarticles"]));
db1.sqlcmd.Parameters.AddWithValue("@MaxEvent", Convert.ToInt32(ViewState["mxevents"]));
db1.sqlcmd.Parameters.AddWithValue("@MaxAllias", Convert.ToInt32(ViewState["mxallias"]));
db1.sqlcmd.Parameters.AddWithValue("@ConstID", Convert.ToInt32(DDConstituency.SelectedValue));
db1.sqlcmd.Parameters.Add("@Identity", SqlDbType.Int);
db1.sqlcmd.Parameters["@Identity"].Direction = ParameterDirection.Output;
db1.sqlcmd.Connection = db1.sqlcon;
db1.sqlcon.Open();
db1.sqlcmd.ExecuteNonQuery();
Subscripid = Convert.ToInt32(db1.sqlcmd.Parameters["@Identity"].Value);
ViewState["Subscripid"] = Subscripid; 
            }
        }
        catch (Exception ex){   Response.Write(ex.Message); }
        finally {db1.sqlcon.Close(); }
    }







Create Proc uspSetSubscriptions
@packageType varchar(25), @UserID int, @ConstID int,
@MaxNotific int, @MaxArticles int, @MaxVideos int,@MaxEvent int,@MaxAllias int,@Cost float,@Identity int OUT
AS
BEGIN
DECLARE @PackageId int
SELECT @PackageId = PackageID FROM TblPackages WHERE Category = @packageType 
INSERT INTO TblSubscription(UserId, PackageId, ConstID, StartDate, FinishDate, MaxNotification, MaxArticles, MaxVideos, MaxEvent, MaxAllias, IsActive, IsPaid)
VALUES(@UserID,@PackageId,@ConstID,GetDate(),GETDATE()+30,@MaxNotific,@MaxArticles,@MaxVideos,@MaxEvent,@MaxAllias,0,0)
SET @Identity = SCOPE_IDENTITY()
END

推荐答案

之后:

After:
SET @Identity = SCOPE_IDENTITY()



add


add

RETURN @Identity





仅使用硬编码值更新数据库的原因是 ViewState [packtype] (和其他人)返回空字符串()。调试程序并检查光标下的值。



The reason your database is updated only with hard coded values is that, the ViewState["packtype"] (and others) returns empty string (""). Debug the program and check what value is under the cursor.


尝试使用SELECT @Identity = SCOPE_IDENTITY()而不是SET @Identity = SCOPE_IDENTITY()
Try use SELECT @Identity = SCOPE_IDENTITY() instead of SET @Identity = SCOPE_IDENTITY()


这篇关于过程或函数uspSetSubscriptions指定了太多参数。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆