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