Trong ngôn ngữ lập trình ABAP / 4, có hai loại SQL đang được sử dụng.
- NATIVE SQL
- MỞ SQL.
SQL gốc cho phép bạn sử dụng các câu lệnh SQL dành riêng cho cơ sở dữ liệu trong chương trình ABAP / 4. Điều này có nghĩa là bạn có thể sử dụng các bảng cơ sở dữ liệu không được quản lý bởi từ điển ABAP và do đó tích hợp dữ liệu không phải là một phần của hệ thống R / 3.
Open SQL bao gồm một tập hợp các câu lệnh ABAP thực hiện các hoạt động trên cơ sở dữ liệu trung tâm trong hệ thống R / 3. Kết quả của các hoạt động và bất kỳ thông báo lỗi nào là độc lập với hệ thống cơ sở dữ liệu đang sử dụng. Open SQL do đó cung cấp cú pháp và ngữ nghĩa thống nhất cho tất cả các hệ thống cơ sở dữ liệu được hỗ trợ bởi SAP. Các chương trình ABAP chỉ sử dụng câu lệnh Open SQL sẽ hoạt động trong bất kỳ hệ thống R / 3 nào, bất kể hệ thống cơ sở dữ liệu đang được sử dụng. Các câu lệnh SQL mở chỉ có thể hoạt động với các bảng cơ sở dữ liệu đã được tạo trong từ điển ABAP.
Các lệnh SQL mở cơ bản
- LỰA CHỌN
- CHÈN
- CẬP NHẬT
- SỬA ĐỔI
- XÓA BỎ
- MỞ CURSOR,? FETCH,? CLOSE CURSOR
SỔ BẢNG BIỂU.BỘ QUẢN LÝ LOẠI DỮ LIỆU C,WA NHƯ SBOOK.MỞ CURSOR C ĐỂ CHỌN * TỪ SBOOK WHERE CARRID = 'LH'AND CONNID = '0400'VÀ FLDATE = '19950228'ĐẶT HÀNG BẰNG KHÓA CHÍNH.LÀM.TÌM KIẾM CURSOR C VÀO WA.NẾU SY-SUBRC <> 0.ĐÓNG CURSOR C.LỐI RA.ENDIF.VIẾT: / WA-BOOKID, WA-CUSTOMID, WA-CUSTTYPE,WA-SMOKER, WA-LUGGWEIGHT, WA-WUNIT,CHỜ HÓA ĐƠN.KẾT THÚC.
Xuất danh sách hành khách cho chuyến bay Lufthansa 0400 ngày 28-02.1995:
Mở mã trả lại SQL
Tất cả các câu lệnh Open SQL điền vào hai trường hệ thống sau bằng mã trả lại.SY-SUBRC
Sau mỗi câu lệnh Open SQL, trường hệ thống SY-SUBRC chứa giá trị 0 nếu thao tác thành công, giá trị khác 0 nếu không.
SY-DBCNT
Sau một câu lệnh Open SQL, trường hệ thống SY-DBCNT chứa số dòng cơ sở dữ liệu được xử lý.
SQL gốc
Như đã đề cập, Native SQL cho phép bạn sử dụng các câu lệnh SQL dành riêng cho cơ sở dữ liệu trong một chương trình ABAP.Để sử dụng câu lệnh SQL gốc, bạn phải đặt trước câu lệnh EXEC SQL và theo sau nó với câu lệnh ENDEXEC.
Cú pháp
EXEC SQL [PERFORMING