sql server 带输入输出参数的分页存储过程(效率最高)
2014-11-27 16:20
447 查看
create procedure proc_page_withtopmax ( @pageIndex int,--页索引 @pageSize int,--每页显示数 @pageCount int output,--总页数,输出参数 @totalCount int output--总条数 ) as begin set 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 output if( @recordCount % @pageSize = 0) --如果总记录条数可以被页大小整除 set @pageCount = @recordCount / @pageSize --总页数就等于总记录条数除以页大小 else --如果总记录条数不能被页大小整除 set @pageCount = @recordCount / @pageSize + 1 --总页数就等于总记录条数除以页大小加1 set @totalCount = @recordCount set nocount off; end --数据库中执行该存储过程 declare @pageCount int, @totalCount int exec proc_page_withtopmax 2,95955,@pageCount output,@totalCount output select '总页数:'+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; cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "proc_page_withtopmax"; cmd.CommandTimeout = 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; } }
相关文章推荐
- sql server 带输入输出参数的分页存储过程(效率最高)
- sql server 带输入输出参数的分页存储过程(效率最高)
- sql server 带输入输出参数的分页存储过程(效率最高)
- asp.net 操作带输入输出参数的分页存储过程(三)
- oracle带输入输出参数存储过程(包括sql分页功能)
- Oracle带输入输出参数存储过程(包括sql分页功能)
- asp.net 操作带输入输出参数的分页存储过程(四)
- oracle使用带有输入和输出参数的存储过程
- C# 调用带输入输出参数的存储过程
- c#带输入输出参数调用存储过程
- SQL Server 第三堂课,学习数据库函数。跟C#语言异曲同工,同样是由输入参数,输出参数,函数体,返回值四要素组成,不同的是语法和写法。掌握知识的关键在与学好C#语言的函数
- 存储过程输出参数:C#中调用输入输出参数的存储过程
- SQL Server 带输出参数和返回装填值的存储过程
- java调用输入参数、输出参数、输出参数为列表的存储过程(一)
- Sql Server中存储过程中输入和输出参数(简单实例,一看就懂)
- 建议 3.10:存储过程、函数中的输入、输出参数及变量的命名应该有所区分,包中的全局变量和局部变量命名也应有所区分。
- ASP.NET中调用存储过程带(输入/输出)参数和返回值
- Sql Server中存储过程中输入和输出参数(简单实例 一看就懂)
- ASP.NET调用存储过程返回值 输入输出参数
- 关于C#中如何调用有输入参数和输出参数的存储过程