SAP ABAP - 原生SQL概述



術語“原生SQL”指的是所有可以靜態傳輸到資料庫介面的原生SQL介面的所有語句。原生SQL語句不屬於ABAP語言範圍,也不遵循ABAP語法。ABAP只是包含用於隔離程式部分的語句,在這些部分中可以列出原生SQL語句。

Native SQL Statement

在原生SQL中,主要可以使用資料庫特定的SQL語句。這些語句從原生SQL介面不變地傳輸到資料庫系統並執行。可以使用相關資料庫的完整SQL語言範圍,並且不需要在ABAP字典中宣告所定址的資料庫表。還有一些小的SAP特定的原生SQL語句,這些語句由原生SQL介面以特定方式處理。

要使用原生SQL語句,必須在前面加上EXEC SQL語句,並在後面加上ENDEXEC語句。

以下是語法:

EXEC SQL PERFORMING <form>.  
   <Native SQL statement> 
ENDEXEC.

這些語句定義了ABAP程式中的一個區域,可以在其中列出一種或多種原生SQL語句。輸入的語句將傳遞到原生SQL介面,然後按如下方式處理:

  • 所有對所定址資料庫系統的程式介面有效的SQL語句都可以在EXEC和ENDEXEC之間列出,特別是DDL(資料定義語言)語句。

  • 這些SQL語句主要不變地從原生SQL介面傳遞到資料庫系統。語法規則由資料庫系統指定,特別是資料庫物件的區分大小寫規則。

  • 如果語法允許在各個語句之間使用分隔符,則可以在EXEC和ENDEXEC之間包含多個原生SQL語句。

  • 可以在EXEC和ENDEXEC之間指定SAP特定的原生SQL語言元素。這些語句不會直接從原生SQL介面傳遞到資料庫,但會進行適當的轉換。

示例

SPFLI是標準的SAP表,用於儲存航班時刻資訊。這在R/3 SAP系統中可用,具體取決於版本和發行級別。當您在相關SAP事務(例如SE11或SE80)中輸入表名SPFLI時,您可以檢視此資訊。您還可以使用這兩個事務檢視此資料庫表中包含的資料。

REPORT ZDEMONATIVE_SQL. 
DATA: BEGIN OF wa,  
      connid  TYPE SPFLI-connid,
      cityfrom TYPE SPFLI-cityfrom,
      cityto  TYPE SPFLI-cityto,  
      END OF wa. 
	
DATA c1 TYPE SPFLI-carrid VALUE 'LH'. 
EXEC SQL PERFORMING loop_output.
   SELECT connid, cityfrom, cityto  
   INTO :wa  
   FROM SPFLI  
   WHERE carrid = :c1 
ENDEXEC. 

FORM loop_output.  
   WRITE: / wa-connid, wa-cityfrom, wa-cityto. 
ENDFORM.

以上程式碼產生以下輸出:

0400  FRANKFURT  NEW YORK 
2402  FRANKFURT  BERLIN 
0402  FRANKFURT  NEW YORK
廣告