【发布时间】:2018-07-23 16:23:11
【问题描述】:
我正在尝试按块数据获取块,但出现以下错误:
将表达式转换为数据类型 int 时出现算术溢出错误。
代码:
int chunkSize = 100000;
int curCount = 1;
while (true)
{
var data = Get("Connectionstring",
"select Id as LinkedColumn,CompareColumn from Source order by
LinkedColumn" + " OFFSET ((" + curCount + " - 1) * " + chunkSize + "
) ROWS FETCH NEXT " + chunkSize + " ROWS ONLY;");
if (data.Count == 0) break;
curCount += chunkSize;
}
以上方法适用于first iteration:
select Id as LinkedColumn,CompareColumn from Source order by
LinkedColumn OFFSET ((1 - 1) * 100000 ) ROWS FETCH NEXT 100000 ROWS ONLY;
但我收到second iteration 的错误:
select Id as LinkedColumn,CompareColumn from Source order by
LinkedColumn OFFSET ((100001 - 1) * 100000 ) ROWS FETCH NEXT 100000 ROWS ONLY;
当我在 sql server management studio 中运行上述查询时,我得到了同样的错误。
我不明白这里有什么问题。
this 上给出的答案与insert command 有关。
谁能帮帮我
【问题讨论】:
-
将
curCount += chunkSize;替换为curCount++;,目前你的分页逻辑不正确。 -
@Evk 哦,是的,您是对的。非常感谢。您的评论本身足以解决问题:)。实际上我从这里参考了:stackoverflow.com/questions/25900285/…
标签: c# sql sql-server pagination