首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sql存储过程返回数据的同时返回一个输出参数在asp.net后台该怎么接收这两个值

2013-04-02 
sql存储过程返回数据的同时返回一个输出参数在asp.net后台该如何接收这两个值ALTER PROCEDURE [dbo].[_Pia

sql存储过程返回数据的同时返回一个输出参数在asp.net后台该如何接收这两个值
ALTER PROCEDURE [dbo].[_PianPaging]
-- Add the parameters for the stored procedure here
@pageIndex int, --第几页
@pageSize  int, --每页显示条数
@pageNum int output --总页数
AS
BEGIN
declare @num int
begin
 select @num=COUNT(*) from tbTeacherPlan
  if(@num<=@pageSize)
   begin
    set @pageNum=1
    select * from tbTeacherPlan
   end
  else
  begin
   declare @b int 
    set @b=@num%@pageSize
    if(@b=0)
    set @pageNum=@num/@pageSize
    else
    set @pageNum=(@num/@pageSize+1) --这是第一个要得到的结果
    declare @SQL nvarchar(1000)
    set @SQL=' select top ' + cast(@pageSize as nvarchar(5))+ ' * from tbTeacherPlan where tpId not in (select top ' + cast((@pageIndex*@pageSize)as nvarchar(5))+ ' tpId from tbTeacherPlan)'
    Exec(@SQL)--这是的二个要得到的结果
  end
 end
END

在用sqlhelp中的方法读执行后该如何获取这两个结果作为返回值 asp.net sql sqlhelp 存储
[解决办法]
调用的时候不是添加了一些SQl参数吗


        /// <summary>
        /// 执行存储过程,如需返回结果(有output的参数),则将结果返回
        /// </summary>
        /// <param name="strProcName">存储过程名</param>
        /// <param name="strConn">连接字符串</param>
        /// <param name="Params">参数集合,参考SqlParam类</param>
        /// <returns>按参数顺序返回结果,失败返回null</returns>
        static public object[] ExecuteProcedureWithOutput(string strProcName, string strConn, params SqlParameter[] Params)
        {
            SqlConnection conn = new SqlConnection(strConn);

            try
            {
                SqlCommand cmd = new SqlCommand();

                cmd.CommandText = strProcName;
                cmd.CommandType = CommandType.StoredProcedure;

                int nOutputParametersCount = 0;
                foreach (SqlParam p in Params)
                    cmd.Parameters.Add(sqlParam);



                cmd.Connection = conn;
                conn.Open();
                cmd.ExecuteNonQuery();  // 你的应该是Scalar了
                conn.Close();

                int i = 0;
                object[] objResult = new object[nOutputParametersCount];
                foreach (SqlParameter p in cmd.Parameters)
                {
                    if (p.Direction == ParameterDirection.Output 
[解决办法]
 p.Direction == ParameterDirection.InputOutput)
                        objResult[i++] = p.Value;
                }

                return objResult;
            }
            catch
            {
                if (conn.State != ConnectionState.Closed)
                    conn.Close();
                return null;
            }
        }

热点排行