create procedure proc_page_withtopmax(@pageIndex int,--页索引@pageSize int,--每页显示数@pageCount int output,--总页数,输出参数 @totalCount int output--总条数)asbeginset nocount on;declare @sql nvarchar(1000)set @sql='select top 10 * from tb_testtable where (id> (select max(id) from (select top '+str((@pageIndex-1)*@pageSize)+' id from tb_testtable order by id) as temp)) order by id'execute(@sql)declare @sqlRecordCount nvarchar(1000) --得到总记录条数的语句set @sqlRecordCount=N'select @recordCount=count(*) from tb_testtable' declare @recordCount int --保存总记录条数的变量exec sp_executesql @sqlRecordCount,N'@recordCount int output',@recordCount outputif( @recordCount % @pageSize = 0) --如果总记录条数可以被页大小整除 set @pageCount = @recordCount / @pageSize --总页数就等于总记录条数除以页大小 else --如果总记录条数不能被页大小整除 set @pageCount = @recordCount / @pageSize + 1 --总页数就等于总记录条数除以页大小加1set @totalCount = @recordCountset nocount off;end--数据库中执行该存储过程declare @pageCount int, @totalCount intexec proc_page_withtopmax 2,95955,@pageCount output,@totalCount outputselect '总页数:'+str(@pageCount)select '总条数:'+str(@totalCount)C# 代码调用该带输入输出参数的分页存储过程public static DataSet GetRecordByPage( int pageSize, int pageIndex, out int pageCount, out int totalCount){DataSet ds = new DataSet();try{using (SqlConnection conn = new SqlConnection(@"server=;database=data_test;uid=; pwd=;")){SqlCommand cmd = new SqlCommand();cmd.Connection = conn;cmd.Parameters.Add(new SqlParameter("@pageSize", SqlDbType.Int));cmd.Parameters.Add(new SqlParameter("@pageIndex", SqlDbType.Int));SqlParameter param = new SqlParameter("@totalCount", SqlDbType.Int);param.Direction = ParameterDirection.Output;cmd.Parameters.Add(param);SqlParameter param1 = new SqlParameter("@pageCount", SqlDbType.Int);param1.Direction = ParameterDirection.Output;cmd.Parameters.Add(param1);cmd.Parameters[0].Value = pageSize;cmd.Parameters[1].Value = pageIndex;cmd.Parameters[2].Value = 0;cmd.Parameters[3].Value = 0;mandType = CommandType.StoredProcedure;mandText = "proc_page_withtopmax";mandTimeout = 180;SqlDataAdapter adapter = new SqlDataAdapter();adapter.SelectCommand = cmd;DataSet source = new DataSet();adapter.Fill(ds);object o = cmd.Parameters["@totalCount"].Value;totalCount = (o == null || o == DBNull.Value) ? 0 : System.Convert.ToInt32(o);object b = cmd.Parameters["@pageCount"].Value;pageCount = (b == null || o == DBNull.Value) ? 0 : System.Convert.ToInt32(b);}}catch (SqlException e){throw e;}return ds;}}
如果觉得《存储过程参数输入输出》对你有帮助,请点赞、收藏,并留下你的观点哦!