您的位置:首页 > 数据库

sql存储过程分页查询

2013-09-18 04:17 387 查看
CREATE PROCEDURE [dbo].[pr_Page_More]
@Key varchar(50),--根据字段查询数量
@Col varchar(50),--排序方式
@Cols varchar(2000),--表字段
@TabName varchar(300),--表名
@Where varchar(1000),--条件
@Page int,--当前页码
@Val int,--每页显示多少页
AS
BEGIN
SET NOCOUNT ON;

declare
@P_begin int,
@P_end int,
@Txt varchar(5000)

set @P_begin=@Page*@Val
set @P_end=@P_begin+@Val

set @Txt='select * from(select ROW_NUMBER() OVER (order by '+@Col+') as Num,'+@Cols+' from '+@TabName+' where 1=1 '+@Where+')as Tab where Tab.Num>'+CONVERT(varchar(10),@P_begin)+' and Tab.Num<='+CONVERT(varchar(10),@P_end)
exec(@Txt)

set @Txt='select count('+@Key+') from '+@TabName+' where 1=1 '+@Where
exec(@Txt)

END
GO


执行操作

public DataSet TagList(string key, string Order, string tabName, string Where, int Page, int Val)
{
SqlParameter[] parameters = {
new SqlParameter("@Key", SqlDbType.VarChar,50),
new SqlParameter("@Col", SqlDbType.VarChar,50),
new SqlParameter("@Cols", SqlDbType.VarChar,100),
new SqlParameter("@TabName", SqlDbType.VarChar,100),
new SqlParameter("@Where", SqlDbType.VarChar,1000),
new SqlParameter("@Page", SqlDbType.Int),
new SqlParameter("@Val", SqlDbType.Int)};
parameters[0].Value = key;
parameters[1].Value = Order;
parameters[2].Value = "*";
parameters[3].Value = tabName;
parameters[4].Value = Where;
parameters[5].Value = Page;
parameters[6].Value = Val;
DataSet ds = SqlHelper.RunProcedure("pr_Page", parameters);
            return ds;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息