sql server 带输入输出参数的分页存储过程(效率最高)
来源:互联网 发布:51单片机c语言教程pda 编辑:程序博客网 时间:2024/05/22 21:25
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 带输入输出参数的分页存储过程(效率最高)
- asp.net 操作带输入输出参数的分页存储过程(—)
- asp.net 操作带输入输出参数的分页存储过程(二)
- asp.net 操作带输入输出参数的分页存储过程(三)
- asp.net 操作带输入输出参数的分页存储过程(四)
- asp.net 操作带输入输出参数的分页存储过程(四)
- asp.net 操作带输入输出参数的分页存储过程(三)
- asp.net 操作带输入输出参数的分页存储过程(二)
- asp.net 操作带输入输出参数的分页存储过程(—)
- 使用带输入输出参数的存储过程
- Oracle带输入输出参数的存储过程
- sql2005带参数的分页存储过程
- C#中调用SQL存储过程(带输入输出参数的例子)
- C#中调用SQL存储过程(带输入输出参数的例子)
- C#中调用SQL存储过程(带输入输出参数的例子)
- C#中调用SQL存储过程(带输入输出参数的例子)
- C#中调用SQL存储过程(带输入输出参数的例子)
- C#中调用SQL存储过程(带输入输出参数的例子)
- hdu 2357 8球胜负
- nginx配置文件
- 内存映射文件原理探索
- 类型转换——atoi函数
- Eclipse 中同一个类内 选中一个变量,在类内其他地方的 该变量高亮标识出来的设置方法
- sql server 带输入输出参数的分页存储过程(效率最高)
- Java 线程池ThreadPoolExecutor简单应用
- eclipse下maven项目开发编译
- VS2003 试图运行项目时出错: 无法在 Web 服务器上启动调试。您不具备调试此应用程序的权限。
- 判断UITextField.text是否为空
- SQLite数据库文件格式
- 前端不为人知的一面———前端冷知识集锦
- maven使用的总结
- Charles使用教程