SAP Tutorial Skrip SQL HANA: Sintaks & Contoh
⚡ Ringkasan Cerdas
Skrip SQL di SAP HANA memperluas SQL standar dengan konstruksi fungsional dan prosedural. HANA mendukung stored procedure dan fungsi yang ditentukan pengguna, memindahkan logika yang intensif data dari server aplikasi ke dalam basis data.

Apa itu Skrip SQL?
SQL Script adalah kumpulan ekstensi untuk SQL. Ini dapat digunakan dalam prosedur tersimpan sebagai pengganti SQL biasa. Ini menentukan ekstensi fungsional dan prosedural.
In SQL Pengguna skrip dapat menentukan variabel lokal untuk struktur dan tabel yang terutama digunakan untuk pembuatan prosedur tersimpan.
Skrip SQL juga dapat digunakan dalam tampilan Perhitungan. Dalam SQL Script, ada dua wadah logika yang berbeda-
- Prosedur (Prosedur memungkinkan Anda untuk menggambarkan urutan transformasi data pada data yang dikirimkan sebagai input dan tabel database).
- User Defined Function (Wadah User Defined Function dipisahkan menjadi Scalar User Defined Function dan Tabel User Defined Function).
Elemen Bahasa Skrip SQL adalah seperti di bawah ini –
Logika Skrip SQL Deklaratif (Ekstensi Fungsional)
- Ini memungkinkan definisi tipe tabel tanpa mereferensikan tabel database.
- Pernyataan Khas seperti SELECT.
- Fungsi Mesin Perhitungan (CE).
⚠️ Catatan versi: Operator rencana Calculation Engine, fungsi CE_ seperti CE_COLUMN_TABLE dan CE_JOIN, sudah usang dan tidak digunakan lagi. SAPPengembangan baru sebaiknya menggunakan pernyataan SQL standar, yang setidaknya ditangani dengan baik oleh pengoptimal. Kode CE yang ada masih berjalan tetapi harus dimigrasikan ketika prosedur diubah selanjutnya.
Logika Skrip SQL Orkestrasi (Ekstensi Fungsional)
Logika orkestrasi digunakan untuk mengimplementasikan aliran data dengan menggunakan DDL, DML dan Pernyataan Kueri SQL dan mengontrol logika aliran menggunakan konstruksi bahasa imperatif seperti loop dan kondisional.
- Pernyataan Bahasa Definisi Data. Misalnya Buat Skema.
- Bahasa Manipulasi Data (Misalnya Sisipkan).
Logika Skrip SQL Imperatif (Ekstensi Prosedural)
Logika imperatif membagi logika di antara beberapa aliran data. Misal IF, ELSEIF, ELSE, CASE, FOR (Loop) dan Pengecualian.
Pentingnya Skrip SQL
Hanya SQL Script yang menyediakan elemen yang diperlukan untuk memigrasikan logika intensif data atau pengoperasian server aplikasi ke server database.
Poin-poin penting dari Skrip SQL
- Skrip SQL dijalankan dan diproses di mesin perhitungan dalam database HANA.
- Skrip SQL mampu melakukan perhitungan yang rumit.
- Dalam SQL Script, variabel lokal dapat dideklarasikan untuk menampung hasil sementara.
- Prosedur Skrip SQL dapat mengembalikan lebih banyak hasil dengan menggunakan "Parameter OUTPUT" sedangkan Prosedur SQL Normal hanya dapat mengembalikan satu hasil.
- Dalam SQL Script, Anda bisa menentukan tipe tabel global atau lokal yang dapat digunakan sebagai parameter.
Dengan menggunakan SQL Script, mode pemrosesan paralel dapat dicapai.
Contoh Prosedur Skrip SQL
Prosedur adalah kontainer yang paling umum. Contoh di bawah ini membaca data karyawan, menyaringnya, dan mengembalikan hasilnya melalui parameter tabel keluaran.
CREATE PROCEDURE DHK_SCHEMA.GET_HIGH_EARNERS ( IN im_min_salary DECIMAL(15,2), OUT ex_employees TABLE (EMP_NAME NVARCHAR(100), SALARY DECIMAL(15,2)), OUT ex_row_count INTEGER ) LANGUAGE SQLSCRIPT READS SQL DATA AS BEGIN -- Declarative logic: a table variable, not a physical table lt_all = SELECT EMP_NAME, SALARY FROM DHK_SCHEMA.EMPLOYEE WHERE SALARY >= :im_min_salary; -- Imperative logic: branch on the result SELECT COUNT(*) INTO ex_row_count FROM :lt_all; IF :ex_row_count = 0 THEN ex_employees = SELECT '' AS EMP_NAME, 0 AS SALARY FROM DUMMY WHERE 1 = 0; ELSE ex_employees = SELECT * FROM :lt_all ORDER BY SALARY DESC; END IF; END;
Ada tiga konvensi yang perlu diperhatikan. Tanda titik dua mendahului setiap pembacaan variabel, jadi :lt_all membaca variabel tabel sementara lt_all Di sebelah kiri, perintah tersebut menetapkan nilainya. Perintah READS SQL DATA memberi tahu pengoptimal bahwa prosedur tersebut tidak memiliki efek samping, yang memungkinkan paralelisasi yang lebih agresif. Dan prosedur yang mengembalikan beberapa parameter keluaran adalah kemampuan yang tidak dimiliki oleh SQL biasa.
Menyebutnya sangat mudah:
CALL DHK_SCHEMA.GET_HIGH_EARNERS (50000, ?, ?);
Fungsi yang Didefinisikan Pengguna Skalar dan Tabel
Jika suatu prosedur melakukan tindakan, maka suatu fungsi mengembalikan nilai dan dapat digunakan di dalam kueri. SQL Script menawarkan dua bentuk dan keduanya tidak dapat saling menggantikan.
| Parameter | UDF Skalar | Tabel UDF |
|---|---|---|
| Pengembalian | Nilai tunggal | Kumpulan hasil |
| Digunakan dalam | Daftar SELECT, klausa WHERE, ekspresi | Klausul FROM, seperti sebuah tabel. |
| Dapat memodifikasi data | Tidak | Tidak |
| Penggunaan khas | Perhitungan yang dapat digunakan kembali, seperti tarif pajak. | Tampilan berparameter yang mengembalikan baris yang difilter |
-- Scalar function: returns one value CREATE FUNCTION DHK_SCHEMA.ADD_BONUS (im_salary DECIMAL(15,2)) RETURNS total DECIMAL(15,2) LANGUAGE SQLSCRIPT AS BEGIN total := :im_salary * 1.10; END; SELECT EMP_NAME, DHK_SCHEMA.ADD_BONUS(SALARY) AS WITH_BONUS FROM DHK_SCHEMA.EMPLOYEE;
Fungsi tabel didefinisikan dengan RETURNS TABLE dan kemudian dikueri dalam klausa FROM, yang menjadikannya cara alami untuk membangun kumpulan data berparameter yang dapat digunakan kembali. tampilan perhitungan atau laporan dapat dikonsumsi.
Praktik Terbaik Skrip SQL
Skrip SQL berkinerja baik ketika ditulis agar mesin dapat melakukan paralelisasi, dan buruk ketika ditulis seperti kode aplikasi. Enam kebiasaan inilah yang membuat perbedaan.
- Lebih baik menggunakan kalimat deklaratif daripada imperatif. Pernyataan berbasis himpunan tunggal mengungguli perulangan yang memproses baris satu per satu, seringkali dengan selisih yang sangat besar. Gunakan perulangan FOR hanya ketika logika tersebut benar-benar tidak dapat diekspresikan sebagai operasi himpunan.
- Hindari penggunaan kursor. Mereka memaksakan pemrosesan baris demi baris dan sepenuhnya mengalahkan mesin perhitungan. Hampir setiap kursor dapat ditulis ulang sebagai operasi join atau agregasi.
- Jaga agar pernyataan tetap independen. Dua variabel tabel yang tidak saling merujuk dihitung secara paralel. Dengan menghubungkan setiap langkah melalui langkah sebelumnya, seluruh prosedur menjadi berurutan.
- Deklarasikan READS SQL DATA di mana true. Hal ini menandakan bahwa prosedur tersebut tidak memiliki efek samping, sehingga memungkinkan optimalisasi lebih lanjut.
- Saring sedini mungkin. Mengurangi jumlah baris pada variabel tabel pertama akan mengecilkan semua yang ada di bawahnya, sedangkan penyaringan di akhir sudah menanggung biayanya.
- Beralihlah dari fungsi CE_. Fitur-fitur tersebut sudah usang, tidak dapat dicampur secara bebas dengan SQL dalam satu pernyataan, dan pengoptimal SQL sekarang menangani pekerjaan yang sama dengan lebih baik.
Sintaks tingkat pernyataan dibahas dalam SAP HANA SQL, fungsi-fungsi yang tersedia di dalam suatu prosedur di SAP Fungsi SQL HANA, dan objek pemodelan yang menggunakan prosedur ini di dalam SAP Pemodelan HANA tutorial.
