百万数据存储过程主体 创建存储过程
CREATE PROC [dbo].[Common_PageList]
(
@tab nvarchar(max),---表名
@strFld nvarchar(max), --字段字符串
@strWhere nvarchar(max), --where条件
@PageIndex int, --页码
@PageSize int, --每页容纳的记录数
@Sort VARCHAR(255), --排序字段及规则,不用加order by
@IsGetCount bit --是否得到记录总数,1为得到记录总数,0为不得到记录总数,返回记录集
)
AS
declare @strSql nvarchar(max)
set nocount on;
if(@IsGetCount = 1)
begin
set @strSql='SELECT COUNT(0) FROM ' + @tab + ' WHERE ' + @strWhere
end
else
begin
set @strSql=' SELECT * FROM (SELECT ROW_NUMBER()
OVER(ORDER BY ' + @Sort + ') AS rownum, ' + @strFld + ' FROM ' + @tab + ' where ' + @strWhere + ') AS Dwhere
WHERE rownum BETWEEN ' + CAST(((@PageIndex-1)*@PageSize + 1) as nvarchar(20)) + ' and ' + cast((@PageIndex*@PageSize) as nvarchar(20))
end
exec (@strSql)
set nocount off;
use mysql
declare @tab nvarchar(max)---表名
set @tab='table1'
declare @strFld nvarchar(max) --字段字符串
set @strFld='*'
declare @strWhere nvarchar(max) --where条件
set @strWhere='id>0'
declare @PageIndex int --页码
set @PageIndex=1
declare @PageSize int --每页容纳的记录数
set @PageSize=10
declare @Sort VARCHAR(255) --排序字段及规则,不用加order by
set @Sort='id asc'
declare @IsGetCount bit --是否得到记录总数,1为得到记录总数,0为不得到记录总数,返回记录集
set @IsGetCount=0
exec Common_PageList @tab,@strFld,@strWhere,@PageIndex,@PageSize,@Sort,@IsGetCount
,net调用存储过程
SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["connstring"]);
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
using (conn)
{
conn.Open();
SqlDataAdapter sda = new SqlDataAdapter("Common_PageList", conn);//创建适配器
sda.SelectCommand.CommandType = CommandType.StoredProcedure;//指示为存储过程
sda.SelectCommand.Parameters.AddWithValue("@tab", "table1");//给存储过程参数赋值
sda.SelectCommand.Parameters.AddWithValue("@strFld", "*");
sda.SelectCommand.Parameters.AddWithValue("@strWhere", "id>0");
sda.SelectCommand.Parameters.AddWithValue("@PageIndex", 1);
sda.SelectCommand.Parameters.AddWithValue("@PageSize", 10);
sda.SelectCommand.Parameters.AddWithValue("@Sort", "id asc");
sda.SelectCommand.Parameters.AddWithValue("@IsGetCount", 0);
DataSet ds = new DataSet();
sda.Fill(ds);//填充数据
Repeater1.DataSource = ds;
Repeater1.DataBind();
}
}
}