1. 程式人生 > >ABAP資料庫操作系列之操作語句講解Select

ABAP資料庫操作系列之操作語句講解Select

1.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.