如题,看看这个语句分页要怎么写
SELECT TOP 10 A.User_Code,A.User_Sex,C.PropertyInstance_Value,A.PhoneNo FROM Base_UserInfo A,
Base_UserRole B,
Base_AppendPropertyInstance C
WHERE A.User_ID=B.User_ID AND
B.User_ID=C.PropertyInstance_Key AND
C.Property_Control_ID='ChatName'
DECLARE @pageSize INT =10, @pageIndex INT=1
SELECT * FROM (
SELECT
ROW_NUMBER() OVER(ORDER BY User_ID) AS rowNum,
A.User_Code,
A.User_Sex,
C.PropertyInstance_Value,
A.PhoneNo
FROM Base_UserInfo A,Base_UserRole B,Base_AppendPropertyInstance C
WHERE
A.User_ID=B.User_ID
AND B.User_ID=C.PropertyInstance_Key
AND C.Property_Control_ID='ChatName'
) AS tb
WHERE tb.rowNum BETWEEN @pageIndex-1 * @pageSize AND @pageIndex * @pageSize
再问一句,我要怎么返回总条数,我好分页
@jinggege:
参数那里加上一个输出参数.
例如 @recordsCount INT OUTPUT
然后输出之前.把recordsCount 赋值.
例如 Select @recordsCount=Count(1) from tb
后台执行完存储过程之后. 获取@recordsCount 参数的值.就可以了.
例如:Int32.Parse(cmd.Parameters["@RecordsCount"].Value.ToString())
cmd 是Command对象。
@李丶GuanYao: 我查询后返回的是DataTable,这个要怎么取总条数
@jinggege:
你执行存储过程的时候. 肯定有Comman对象吧. 然后还要有一个输出参数.例如叫@RecordsCount.
var count=Int32.Parse(Comman.Parameters["@RecordsCount"].Value.ToString())
这样就获取出来了.
你如果要传到前台去. 你要在方法参数那里使用ref 或者out 将count 值传到前台去.
有一种分页叫 row_number