Mar*_*tin 9 sql-server stored-procedures rounding
我为sql server编写了一个分页系统.它工作得很好,但我试图返回总共有多少页
因此,如果每页有5条记录和2条记录,那么总共3页
这就是我所拥有的
SELECT @TotalPages = ( (SELECT COUNT(*) FROM #TempItems) / @RecsPerPage )
Run Code Online (Sandbox Code Playgroud)
我的输出参数定义如下
@TotalPages AS INT OUT,
Run Code Online (Sandbox Code Playgroud)
现在它有点工作:-)在我的测试中每页有5条记录和2条记录,所以上面的选择返回2但它的错误应该是3
这是因为它说5/2 =整数2 ...我怎么围绕......?
我累了天花板,但无法让它工作..
有任何想法吗?
提前致谢
Roo*_*noy 13
您是否尝试将分子和分母投射为浮点数然后使用Cieling?
整数运算总是给出整数.尝试以下方法 -
SELECT @TotalPages = CEILING((SELECT cast(COUNT(*) as float) FROM #TempItems) / @RecsPerPage )
Run Code Online (Sandbox Code Playgroud)
您可以使用整数算术:
SELECT @TotalPages = ((SELECT COUNT(*) FROM #TempItems) + @RecsPerPage - 1) / @RecsPerPage
Run Code Online (Sandbox Code Playgroud)
(很多年前我曾经想过这个公式(在有互联网的地方,你可以问这样的想法),并多次使用它.)