分页存储过程
大神都是从菜鸟开始的,所以菜鸟的学习很重要!
自己写的一个很好用很实际的例子,可以直接使用
1.创建sql的存储过程
CREATE PROCEDURE Page
@iPage int=1, --当前页码
@iPageSize int=10,--每页条数
@StrTable varchar(4000),--查询的表
@StrText varchar(1000),--查询的字段
@StrWhere varchar(1000),--条件
@StrIndex varchar(30),--索引
@StrOrder varchar(100),--排序字段
@StrTotals int output --返回总条数
AS
--定义变量
declare @SQLCount nvarchar(4000)
declare @Sql nvarchar(4000)
declare @TempOrder nvarchar(4000)
if @StrOrder<>''
begin
set @TempOrder=' order by '+@StrOrder
end
else
begin
set @TempOrder=''
end
--组合sql语句
if @iPage=1
begin
set @Sql='select top '+str(@iPageSize)+' '+@StrText+' from '+@StrTable+' where 1=1 '+@StrWhere+@TempOrder
end
else
begin
set @Sql='select top '+str(@iPageSize)+' '+@StrText+' from '+@StrTable+' where '+@StrIndex+' not in (select top '+str(@iPageSize*(@iPage-1))+' '+@StrIndex+' from '+@StrTable+' where 1=1 '+@StrWhere+@TempOrder+') '+@StrWhere+@TempOrder
end
set @SqlCount='select @StrTotals=isnull(count(*),10000) from '+@StrTable+' where 1=1 '+@StrWhere
--查询总记录数量
exec sp_executesql @SqlCount,N'@StrTotals int output',@StrTotals output
--执行sql语句返回
exec (@Sql)
2.访问层调用
public static DataTable Getlist(int PageSize, int CurrentPage, string strWhere, out int Record, string biao, string strdesc,string zd ,string zkey)
{
DataTable Dt = new DataTable();
SqlParameter[] prams ={new SqlParameter("@StrTable",SqlDbType.VarChar,4000),//表名
new SqlParameter("@StrIndex",SqlDbType.VarChar,100),//主键
new SqlParameter("@StrText",SqlDbType.VarChar,350),//字段
new SqlParameter("@iPageSize",SqlDbType.Int),//每页记录数
new SqlParameter("@iPage",SqlDbType.Int),//当前页
new SqlParameter("@StrWhere",SqlDbType.VarChar,1000),//查询条件
new SqlParameter("@StrOrder",SqlDbType.VarChar,200),//排序字
new SqlParameter("@StrTotals",SqlDbType.Int) };
prams[0].Value = biao;
prams[1].Value = zkey;// "id";
prams[2].Value = zd;//"*";
prams[3].Value = PageSize;
prams[4].Value = CurrentPage;
prams[5].Value = strWhere;
prams[6].Value = strdesc;
prams[7].Direction = ParameterDirection.Output;
Dt = DBa.ExecuteDataTable("Page", prams, CommandType.StoredProcedure);
Record = Convert.ToInt32(prams[7].Value);
return Dt;
}

浙公网安备 33010602011771号