62,243
社区成员




SELECT * FROM (SELECT ROW_NUMBER() OVER (Order By a.aid desc) AS pos, * FROM TableA as a inner join TableB as b on a.aid=b.aid where a.aid=11) AS sp WHERE pos BETWEEN 1 AND 10
-- 可以将上面的语句写成一个支持多表分页的存储过程
------------------------------------
--用途:
--项目名称:
--说明:
--时间:
------------------------------------
CREATE procedure [dbo].[SP_GetPage]
@tblName varchar(1000), -- 表名
@strGetFields varchar(1000) = '*', -- 需要返回的列
@strOrder varchar(100)='', -- 排序的字段名
@PageSize int = 10, -- 页尺寸
@PageIndex int = 1, -- 页码
@strWhere varchar(1500) = '', -- 查询条件 (注意: 不要加 where)
@sort varchar(5) ='asc',
@RowCount int output
AS
declare @strSQL varchar(5000)
declare @DynamicSQL nvarchar(4000)
if @strWhere !=''
set @strWhere=' where '+@strWhere
SET @DynamicSQL = N'select @RowCount = count(*) from '+@tblName+@strWhere
print @RowCount
exec sp_executesql @DynamicSQL, N'@RowCount int OUTPUT',@RowCount OUTPUT
print @RowCount
set @strSQL='SELECT * FROM (SELECT ROW_NUMBER() OVER (Order By '+@strOrder+' '+@sort+') AS pos,'+@strGetFields+' FROM '+@tblName+@strWhere+') AS sp WHERE pos BETWEEN '+str((@PageIndex-1)*@PageSize+1)+' AND '+str(@PageIndex*@PageSize)
exec (@strSQL)
-- 调用方法
declare @ct int
exec [XH_ShowPage] 'TExamCompany as a inner join TCompany as b on a.fCompanyID=b.fCompanyID',
' * ','a.aid', 10, 1, 'a.fCompanyID=11', 'desc', @ct output
List list = new List();
list.Add("111");
list.Add("222");
// 循环时
foreach(object obj in list){
string temp = obj as string;
// 可以使用temp了
}
// 或者你在声明的时候,指定list存储元素的类型,这是推荐的做法
List<string> list = new List<string>();
// 直接可以这样写了
foreach(string temp in list){
}
-- 每页记录条数
declare int @pageSize
set @pageSize=10
-- 页码
declare int @pageIndex
set @pageIndex=1
declare varchar(1000) @sql
if @pageIndex-1=0
begin
set @sql = 'select top ' + cast(@pageSize as varchar) + ' from tableA order by aid'
end
else
begin
set @sql='select top ' + cast(@pageSize as varchar) + ' * from tableA where aid not in ('
set @sql=@sql+ ' select top' + cast(@pageSize*(@pageIndex-1) as varchar) +' aid from tableA
set @sql=@sql+ ' order by aid) order by aid'
end
exec (@sql)