SAP ABAP - ภาพรวมของ SQL ดั้งเดิม

คำว่า 'Native SQL' หมายถึงคำสั่งทั้งหมดที่สามารถถ่ายโอนไปยังอินเทอร์เฟซ Native SQL ของอินเทอร์เฟซฐานข้อมูลแบบคงที่ คำสั่ง SQL ดั้งเดิมไม่อยู่ในขอบเขตภาษาของ ABAP และไม่เป็นไปตามไวยากรณ์ ABAP ABAP มีเพียงคำสั่งสำหรับแยกส่วนของโปรแกรมซึ่งสามารถแสดงรายการคำสั่ง Native SQL ได้

ใน SQL ดั้งเดิมส่วนใหญ่สามารถใช้คำสั่ง SQL เฉพาะฐานข้อมูลได้ สิ่งเหล่านี้ถูกถ่ายโอนโดยไม่เปลี่ยนแปลงจากอินเทอร์เฟซ SQL ดั้งเดิมไปยังระบบฐานข้อมูลและดำเนินการ สามารถใช้ขอบเขตภาษา SQL แบบเต็มของฐานข้อมูลที่เกี่ยวข้องได้และไม่จำเป็นต้องประกาศตารางฐานข้อมูลที่ระบุไว้ในพจนานุกรม ABAP นอกจากนี้ยังมีชุดคำสั่ง Native SQL เฉพาะของ SAP ชุดเล็ก ๆ ที่ได้รับการจัดการในลักษณะเฉพาะโดยอินเทอร์เฟซ SQL ดั้งเดิม

ในการใช้คำสั่ง Native SQL คุณต้องนำหน้าด้วยคำสั่ง EXEC SQL และลงท้ายด้วยคำสั่ง ENDEXEC

ต่อไปนี้เป็นไวยากรณ์ -

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

คำสั่งเหล่านี้กำหนดพื้นที่ในโปรแกรม ABAP ซึ่งสามารถแสดงรายการคำสั่ง Native SQL อย่างน้อยหนึ่งรายการ คำสั่งที่ป้อนจะถูกส่งไปยังอินเทอร์เฟซ Native SQL จากนั้นประมวลผลดังนี้ -

  • คำสั่ง SQL ทั้งหมดที่ถูกต้องสำหรับอินเทอร์เฟซโปรแกรมของระบบฐานข้อมูลแอดเดรสสามารถแสดงรายการระหว่าง EXEC และ ENDEXEC โดยเฉพาะคำสั่ง DDL (data definition language)

  • คำสั่ง SQL เหล่านี้ถูกส่งจากอินเทอร์เฟซ Native SQL ไปยังระบบฐานข้อมูลโดยส่วนใหญ่ไม่มีการเปลี่ยนแปลง กฎไวยากรณ์ถูกระบุโดยระบบฐานข้อมูลโดยเฉพาะกฎความไวของตัวพิมพ์สำหรับอ็อบเจ็กต์ฐานข้อมูล

  • หากไวยากรณ์อนุญาตให้ใช้ตัวคั่นระหว่างแต่ละคำสั่งคุณอาจรวมคำสั่ง Native SQL จำนวนมากระหว่าง EXEC และ ENDEXEC

  • องค์ประกอบภาษา Native SQL เฉพาะของ SAP สามารถระบุได้ระหว่าง EXEC และ ENDEXEC คำสั่งเหล่านี้ไม่ได้ถูกส่งโดยตรงจากอินเทอร์เฟซ Native SQL ไปยังฐานข้อมูล แต่จะถูกแปลงอย่างเหมาะสม

ตัวอย่าง

SPFLI เป็นตาราง SAP มาตรฐานที่ใช้ในการจัดเก็บข้อมูลตารางการบิน สิ่งนี้พร้อมใช้งานภายในระบบ SAP R / 3 ขึ้นอยู่กับเวอร์ชันและระดับรีลีส คุณสามารถดูข้อมูลนี้ได้เมื่อคุณป้อนชื่อตาราง SPFLI ลงในธุรกรรม SAP ที่เกี่ยวข้องเช่น SE11 หรือ SE80 คุณยังสามารถดูข้อมูลที่อยู่ในตารางฐานข้อมูลนี้ได้โดยใช้ธุรกรรมทั้งสองนี้

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