|
set @strSQL = 'select top ' + str(@PageSize) + ' * from [' + @tblName + ']' + @strTmp + ' ' + @strOrder end else begin --如果是降序查询…… if @OrderType != 0 begin set @strTmp = '<(select min' set @strOrder = ' order by [' + @fldName +'] desc' end --如果是升序查询…… else begin set @strTmp = '>(select max' set @strOrder = ' order by [' + @fldName +'] asc' end
if @strWhere != '' set @strSQL = 'select top ' + str(@PageSize) + ' * from [' + @tblName + '] where [' + @fldName + ']' + @strTmp + '([' + @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' [' + @fldName + '] from [' + @tblName + '] where ' + @strWhere + ' ' + @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder else set @strSQL = 'select top ' + str(@PageSize) + ' * from [' + @tblName + '] where [' + @fldName + ']' + @strTmp + '([' + @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' [' + @fldName + '] from [' + @tblName + ']' + @strOrder + ') as tblTmp)' + @strOrder
end end
exec (@strSQL) GO ---------------------------------------------- 我也来一下,这个可以实现多表查询。
-- ============================================= -- 数据分页的存储过程 -- 记录号在 TempIDKey_Num 字段中 -- 调用的例子: 表示 从结果中第3行开始的5条记录。 -- T-SQL:EXECUTE proTest N'select top 100 percent * from orders', 3,5 -- ASP.NET(C#): -- <%@ Page Language="C#" %> -- <%@ Import Namespace="System.Data" %> -- <%@ Import Namespace="System.Data.SqlClient" %> -- <Script Runat="Server"> -- void Page_Load( Object s, EventArgs e ) -- { -- SqlConnection myConnection; -- SqlCommand myCommand; -- myConnection = new SqlConnection( "Server=(local);uid=sa;pwd=11;Database=Northwind" ); -- myCommand = new SqlCommand( "proTest", myConnection ); -- myCommand.CommandType = CommandType.StoredProcedure; -- myCommand.Parameters.Add("@strSql","Select top 30 * from orders"); -- myCommand.Parameters.Add("@startRow",10); -- myCommand.Parameters.Add("@maxRows",15);
|