我有一个存储过程,它以XML格式输出我的结果;所有的输出都很好。
不过,我需要包括它正在输出的行计数,如果可能的话,也包括行计数。
SELECT A.[id],
A.[petName],
A.[petCaption],
B.[petType],
C.[FirstName] as ownerFirstName,
C.[LastName] as ownerLastName,
A.[imageName],
(
SELECT CONVERT(varchar(20),sum(transactionAmount), 1) as totalRaised
FROM petContestTransactionsDonations
WHERE submissionID = A.[id]
FOR XML PATH ('transactionDetails'), TYPE, ELEMENTS
)
FROM petContestSubmissions as A
LEFT OUTER JOIN petContestTypes as B
ON A.[petType] = B.[id]
LEFT OUTER JOIN EmpTable as C
ON A.[empID] = C.EmpID
LEFT OUTER JOIN petContestTransactionsEntries as E
ON E.[submissionID] = A.[id]
WHERE E.[transactionStatus] = 'completed'
ORDER BY A.[id]
OFFSET @offset ROWS
FETCH NEXT @rows ROWS ONLY
FOR XML PATH ('submission'), TYPE, ELEMENTS, ROOT ('root');我将offset和rows传递给存储过程,因为我正在使用它进行分页。它正在获取限制为X行的页面记录。
即使我说给我接下来的10张唱片,它可能只剩下8张了。这就是我需要返回的内容;它在select语句中找到的总记录。
在存储过程中还是在遍历记录的我的php中最好这样做?
发布于 2014-06-29 20:47:17
如果希望在每一行上计算行数,则包括:
count(*) over () as RowCount在最外层的select子句中。
如果您想先将所有数据读入应用程序,那么请在应用程序层中进行。
编辑:
如果您想要查询返回的行数,那么最好在应用层中这样做。你也可以:
select t.*, count(*) over () as RowCOunt
from (<your query here>) t;发布于 2014-06-29 21:39:51
也许这个能满足你的需要。不在同一个查询中,但您可以尝试
SELECT @@ROWCOUNT AS RowsAffected在查询之后,您应该立即得到您要查找的内容。@@ROWCOUNT是每个会话,所以只要您不结束连接,就应该没事。
https://stackoverflow.com/questions/24480116
复制相似问题