sql-server-如何选择前100名,然后选择(如果我选择)以下100名,直到行尾?

2020-08-20 20:19发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


在PowerBuilder应用程序中的

在包含dw_1脚本的窗口打开事件中包含dw_1.retrieve() >因此,我仅从表中检索100行
现在,我想在用户单击窗口时在窗口上放置按钮(下一个),他检索下一个/上一个100行(根据已检索的行)以及当上一个/第一行next/prev被禁用
当我尝试搜索并将arg传递给dw(dw.retrieve(arg))作为已经显示的100行中的pb搜索时,我想何时开始对所有行进行pb搜索( 即清除选择统计中的前100名,)并仅返回满足我搜索的显示按钮(下一个/上一个)的10行以显示以下行

最佳问候

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


在PowerBuilder应用程序中的

在包含dw_1脚本的窗口打开事件中包含dw_1.retrieve() >因此,我仅从表中检索100行
现在,我想在用户单击窗口时在窗口上放置按钮(下一个),他检索下一个/上一个100行(根据已检索的行)以及当上一个/第一行next/prev被禁用
当我尝试搜索并将arg传递给dw(dw.retrieve(arg))作为已经显示的100行中的pb搜索时,我想何时开始对所有行进行pb搜索( 即清除选择统计中的前100名,)并仅返回满足我搜索的显示按钮(下一个/上一个)的10行以显示以下行

最佳问候

付费偷看设置
发送
7条回答
梦想连接
2楼-- · 2020-08-20 21:00

什么???

为什么使用使用skip的SQL READ会带来锁定问题?

我们正在谈论sql READ,它要求读取比普通SQL select语句少的数据。

这里没有更新的讨论。 SAP DB接口在哪个DB platofmr上将选择转换为具有保持/锁定的选择?

实际上,默认情况下,SAP会在数据库!!!上进行未提交的读取。

SQL选项

取5(最多n行)

跳过10(以abap偏移关闭)

非常有意义,并且在SAP之外广泛使用。 尤其是在与订购依据结合使用时。

请分享您在哪个平台上看到ABAP选择最多x行导致数据库锁定。

从7.52开始,在ABap中确实可以选择x行跳过y行。

https://help.sap.com/doc/ abapdocu_752_index_htm/7.52/zh-CN/abapselect_up_to_offset.htm

小灯塔
3楼-- · 2020-08-20 21:02

根据需要检索行可能会出现以下问题

在多用户情况下,根据需要检索行可能会将其他人从表中锁定。

如果已指定排序,则按需检索行将被覆盖

落灬小鱼
4楼-- · 2020-08-20 20:58

您应该在多用户设置中尝试一下并查看。 如果您的数据窗口是只读的(没有更新),那么您应该没问题,而不是指定排序表达式,而是在查询中使用用户ORDER BY。

您还可以在数据库上创建视图以防止锁定,但这会涉及更多的问题。

吹牛啤
5楼-- · 2020-08-20 21:16

感谢每一个回答我的人

TóthPéte回答说:"我们使用informix:从表顺序中选择跳过10个前10个*…",我在sql server 2012中发现类似的内容,即"

仅偏移N行抓取下X行

在SQL Server 2008中,我可以使用

ROW_NUMBER()OVER(由GökalpAKYÜZ答复),但偏移和获取更容易

罗兰·史密斯(Roland Smith)建议在DW的sqlpreview事件中更改sql synatx,我在sqlpreview事件中编写了这些代码

ls_sql = dw_1.GetSQLSelect()

SqlSyntax = ls_sql +'通过import_letter.im_letter_serial DESC排序,import_letter.im_letter_no DESC OFFSET'+字符串(ii_offset)+'ROWS仅抓取下10个ROW''

setsqlpreview(SqlSyntax)

其中ii_offset是实例var-其初始val = 0,当我使用下一页时ii_offset = ii_offset + 10

它可以正常工作,但也有明显的延迟时间(可能是因为我尝试在仅具有8 GB内存的服务器上尝试)

最佳注册表

木偶小白
6楼-- · 2020-08-20 20:51

使用"下一个X"会在大量记录上变慢,因为它必须对它们进行计数。

使用基于值的限制而不是行限制来使其快速。 像这样:

选择前100个mycolumn
 来自mytable
 在mycolumn>:ll_lastretrievedid
 按mycolumn排序

一周热门 更多>