ABAP数据库操作系列之操作语句讲解Select
????? Select single:這個語句從數據庫中選取一條數據,如果根據查詢的條件(where)可以得到多條數據的話,必須有(endselect),在這種情況下,在abap的語法檢查中會有警告(slin),所以應該盡量避免使用,可以使用這個來代替:
????? Select xxx From xxx into xxx .
??????? Exit.
????? Endselect.
??? 也就是說,用這個的前提是使用表的primary key去做的查詢。
????? Select distinct:重復的紀錄會過濾掉。因為用distinct會導致在數據庫服務器上有個排序的操作,影響性能,所以不如在abap里面來實現。
???????????? Select xxx From xxx? Into? itab?? Where xxx .
???????????? Sort itab by xxx .
???????????? DELETE ADJACENT DUPLICATES FROM ITAB COMPARING? xxx .
????? Select single for update:當使用這個的時候,可以防止其他的事務對該字段的更新或者修改的操作,一般不使用。
????? Select *:選取數據庫表中的所有定義的字段。如果不是需要所有的字段,盡量避免使用該選項,對性能有一些影響。最好指定你所需要的字段。
????? Select s1 s2 … sn:指定你要選擇的字段。
????? 注意:如果在你所選擇的字段中包含數據類型:STRING 或 RAWSTRING的時候,不能使用。
????? Select (source_text):
??????? a. source_text是一個字段,那么可以定義一個字符型變量,把你要選擇的字段的名稱賦給這個變量就可以了。
????????? Data:field(10) type c .? field = “carrid” .
????????? Select (field) from xxx ………..
??????? b.source_text是字符串,也就是說你想選擇的是多個字段的時候,那么可以把這幾個字段concatenate到這個字符串中,然后separated by 空格就可以了。
??? DATA: L_S(100) TYPE C .
??? DATA: L_CARRID LIKE SPFLI-CARRID,
????????? L_CONNID LIKE SPFLI-CONNID .
????? CONCATENATE 'CARRID' 'CONNID' INTO L_S SEPARATED BY SPACE .
????? SELECT (L_S)
??????? FROM SPFLI
??????? INTO (L_CARRID, L_CONNID)
?????? WHERE XXX .
????? ENDSELECT .
??????? c.source_text是個內表,你可以選擇單個或者多個字段。
??? DATA: ftab TYPE TABLE OF STRING.
??? APPEND 'CITYFROM' TO ftab.
??? APPEND 'CITYTO'?? TO ftab.
??? SELECT (ftab)
?????????? FROM spfli into xxx where xxx .
??? ENDSELECT.
總結
以上是生活随笔為你收集整理的ABAP数据库操作系列之操作语句讲解Select的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ABAP 负号 提前
- 下一篇: ABAP--关于重复行的处理