日期:2014-05-17  浏览次数:20540 次

存储过程调用 指定了过多的参数 ,有木有大牛来,100%结贴
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go


 ALTER proc [dbo].[Up_CheckManagerSession]
@userId   varchar(20),
@ItemUrl varchar(50)
as
declare @i int ;

declare @ItemList varchar(300);

declare @ItemId  varchar (10)

select @ItemId=ItemId from TR_Item where ItemUrl=@ItemUrl
select @ItemList=ItemList from ManagerTb where UserId=@userId
 
declare @sql nvarchar(3000)
declare @ii int 
set @sql ='select @i= count(1) from  ManagerTb where userId='''+@userId+''' and '''+@ItemId+''' in('+@ItemList+')'
 exec sp_executesql @sql ,N'@i int  out',@ii out  


后台调用的关键代码如下:
 SqlCommand cmd = new SqlCommand("Up_CheckManagerSession", con); //调用存储过程

            cmd.CommandType = CommandType.StoredProcedure;
            con.Open(); 
            cmd.Parameters.Add("@ItemUrl", patp);
            cmd.Parameters.Add("@userId", context.Session["ManagerId"].ToString());
            cmd.Parameters.Add("@ii", "").Direction = ParameterDirection.Output;//获取存储过程的返回值
            cmd.ExecuteNonQuery();
            string value = cmd.Parameters["@ii"].Value.ToString();//把返回值赋值给value



为什么 cmd.ExecuteNonQuery();这步出错啦,提示“指定了过多的参数”,这问题纠结了很久 , 很蛋疼, 求大牛
存储过程?sql sql 存储过程

------解决方案--------------------
你存储过程两个参数为什么调用的时候用三个参数啊?