ITPub博客

首页 > Linux操作系统 > Linux操作系统 > FOR ALL ENTRIES IN itab WHERE cond使用注意事项

FOR ALL ENTRIES IN itab WHERE cond使用注意事项

原创 Linux操作系统 作者:ultraluck 时间:2019-05-22 13:24:06 0 删除 编辑

FOR ALL ENTRIES IN itab WHERE cond使用注意事项:

* Suppost FTAB is filled as follows:
*
* CARRID CONNID
* --------------
* LH 2415
* SQ 0026
* LH 0400

1.SELECT CARRID CONNID PRICE

FROM SFLIGHT

INTO TABLE IT_PRICE

FOR ALL ENTRIES IN IT_SFLIGHT

WHERE CARRID = IT_SFLIGHT-CARRID

AND CONNID = IT_SFLIGHT-CONNID'.

在 WHERE 条件中,IT_SFLIGHT-CARRID和IT_SFLIGHT-CONNID这些列将用作占位符。
该 SELECT 语句的结果集是 SELECT 语句的所有结果集的联合,这些结果集是用内部表 IT_SFLIGHT 中的相应值在每一行上替换占位符的结果。实际上该WHERE子句的特殊变式就是下面WHERE基本语句的简略写法。

SELECT DISTINCT CARRID CONNID PRICE

FROM SFLIGHT

INTO TABLE IT_PRICE

WHERE ( CARRID = 'LH' AND CONNID = '2415' ) OR

( CARRID = 'SQ' AND CONNID = '0026' ) OR

( CARRID = 'LH' AND CONNID = '0400' ) .


2.使用该语句,对于最后得出的结果集系统会自动删除重复行。
因此如果你要保留重复行记录时,记得在SELECT语句中添加足够键值项目
(有必要时,增加全部键值项目),
以保证结果集中所需重复项目不会被删除。
(例如选取支付金额时,支付事件可能不同,但金额可能相同,
此时一定要注意,以避免错误删除结果记录。)

3.FOR ALL ENTRIES IN后面使用的内部表itab如果为空,系统将视为无条件选取,
将当前CLIENT下所有记录选出。因此为避免无意义的全件检索,
在使用该语句前一定要判断内部表itab是否为空,为空时不执行包含该语句的数据库检索处理。

4.由于itab-f实际上是作为占位符被替换,所以内部表itab中不要包含HEADER行(项目标识名称行),以免造成混淆,检索出错。

5.内部表itab中作为条件替换用项目的类型和长度,
一定要和检索数据库中对应的项目相同,否则编译不能通过。

6.对于内部表itab中作为条件替换用项目,不能使用LIKE,BETWEEN,IN比较操作符。
因为这些比较操作符都是不确定比较操作符(将选择条件设定在一个范围内),
而FOR ALL ENTRIES IN语句的作用相当于将选择条件块全部并列开来,用OR连接,
如果每个OR分支中又是不确定的范围,那么系统性能将大大降低,
因此R/3系统在使用该语句时禁止使用不确定比较操作符。

7.使用该语句时,ORDER BY语句和HAVING语句将不能使用。

8.使用该语句时,除COUNT( * )以外的所有合计函数(MAX,MIN,AVG,SUM)都不能使用。

1. Duplicates are automatically removed from the resulting data set. Hence care should be taken that the unique key of the detail line items should be given in the select statement.
2. If the table on which the For All Entries IN clause is based is empty, all rows are selected into the destination table. Hence it is advisable to check before-hand that the first table is not empty.
3. If the table on which the For All Entries IN clause is based is very large, the performance will go down instead of improving. Hence attempt should be made to keep the table size to a moderate level.


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/190059/viewspace-476555/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2004-12-03

  • 博文量
    135
  • 访问量
    98095