日期:2014-05-18  浏览次数:20494 次

求助-函数内调用存储过程中的返回值如何取得
各位朋友,帮我看看下面的这个问题,我是想从分页过程中取得总记录和总页数,我定义了两个公共变量,在下面的函数中给其赋值,但是在调用过程中,两个变量的值始终为0,有没有办法把存储过程中的返回值取出来,在另一个地方用。

//分页专用执行方法
  public   class   kk
{
                public   int   TotalPage;
                public   int   TotalCount;
                public   DataTable   GetRecord(string   sql,   CommandType   cmdType,   params   SqlParameter[]   parameters)
                {
                        SqlDataAdapter   sda   =   new   SqlDataAdapter(sql,   conn);
                        sda.SelectCommand.CommandType   =   cmdType;
                        if   (parameters   !=   null)
                        {
                                foreach   (SqlParameter   p   in   parameters)
                                        sda.SelectCommand.Parameters.Add(p);
                        }
                        Open();
                        DataTable   dt   =   new   DataTable();
                        sda.Fill(dt);
                        TotalCount   =   int.Parse(sda.SelectCommand.Parameters[0].Value.ToString());
                        TotalPage   =   int.Parse(sda.SelectCommand.Parameters[1].Value.ToString());
                        sda.SelectCommand.Parameters.Clear();
                        sda.Dispose();
                        Close();
                        return   dt;
                }

}
在需要调用的地方调用那两个变量值始是0,谢谢各位帮助

------解决方案--------------------
使用out关键字写进方法的签名
------解决方案--------------------
要在存储过程中输出的值,需要在存存过程中使用Output声明外,在C#中也要使用Output来声明才行,比如:

p.Direction=ParameterDirection.Output;
sda.SelectCommand.Parameters.Add(p);

不知道你是否是这样的。


------解决方案--------------------
SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
sda.SelectCommand.CommandType = cmdType;
if (parameters != null)
{
foreach (SqlParameter p in parameters)
sda.SelectCommand.Parameters.Add(p);
}
Open()