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.