Prosedur Tersimpan di SAP HANA (Tutorial SQL)
โก Ringkasan Cerdas
SAP Prosedur Tersimpan HANA SQL adalah blok SQLScript bernama yang dapat digunakan kembali dan melakukan operasi data tertentu. Prosedur ini menerima parameter IN, OUT, dan INOUT, dapat ditandai sebagai hanya baca dengan READS SQL DATA, dan dibuat pada tingkat skema atau paket menggunakan sintaks CREATE PROCEDURE.

Apa itu Prosedur Tersimpan SQL?
A prosedur tersimpan Prosedur adalah unit kode bernama yang dapat digunakan kembali dan menjalankan tugas spesifik. Prosedur dapat disusun menjadi program yang lebih besar, yang merupakan dasar dari desain modularSatu prosedur dapat memanggil prosedur lain โ pemanggil disebut sebagai [nama prosedur]. program panggilan.
Prosedur adalah blok pemrosesan yang dapat digunakan kembali dengan urutan transformasi data yang telah ditentukan. Prosedur dapat menerima beberapa parameter input dan output dan dapat dideklarasikan hanya baca (read-only) atau baca-tulis (read-write).
An SQL prosedur di SAP HANA dapat dibuat di:
- Tingkat skema (Node katalog) โ dikelola melalui katalog dan terlihat oleh setiap konsumen dengan hak akses yang sesuai.
- Tingkat paket (Node konten) โ dikelola sebagai artefak waktu desain di dalam paket aplikasi.
SAP Sintaks Prosedur Tersimpan HANA
Sintaks umum untuk membuat prosedur di SAP HANA ditampilkan di bawah ini.
CREATE PROCEDURE <proc_name> [(<parameter_clause>)] [LANGUAGE <lang>]
[SQL SECURITY <mode>] [DEFAULT SCHEMA <default_schema_name>]
[READS SQL DATA [WITH RESULT VIEW <view_name>]] AS
{ BEGIN [SEQUENTIAL EXECUTION]
<procedure_body>
END
| HEADER ONLY }
The CREATE PROCEDURE Pernyataan tersebut membuat sebuah prosedur menggunakan bahasa pemrograman yang ditentukan oleh <lang>Bahasa defaultnya adalah SQLScript.
Penjelasan Elemen Sintaksis
Tabel di bawah ini menjelaskan setiap klausa yang digunakan dalam sintaks CREATE PROCEDURE.
| Elemen | Deskripsi |
|---|---|
<proc_name> |
Nama prosedur. |
<parameter_clause> |
Daftar parameter, masing-masing ditandai IN, OUT, atau INOUT: โข IN โ input hanya baca yang diteruskan ke prosedur. โข OUT โ output yang dikembalikan dari prosedur. โข MASUK โ menerima nilai masukan dan mengembalikan nilai yang telah dimodifikasi. |
LANGUAGE <lang> |
Bahasa pemrograman yang digunakan dalam prosedur. Default: SQLSCRIPT. |
SQL SECURITY <mode> |
Mode keamanan (Default: DEFINER): โข PENENTU โ dijalankan dengan hak akses pembuat prosedur. โข PEMANGGIL โ dijalankan dengan hak akses pemanggil. |
DEFAULT SCHEMA <default_schema_name> |
Skema yang digunakan untuk menyelesaikan objek yang tidak memenuhi syarat dalam isi prosedur. Jika dihilangkan, skema sesi saat ini akan digunakan. |
READS SQL DATA |
Menandai prosedur sebagai hanya baca. Prosedur ini tidak dapat memodifikasi data atau skema, tidak berisi DDL atau DML, dan hanya dapat memanggil prosedur hanya baca lainnya. |
WITH RESULT VIEW <view_name> |
Menentukan tampilan hasil yang digunakan sebagai keluaran prosedur. Jika tampilan hasil tersedia, prosedur dapat diakses oleh prosedur lain. SQL pernyataan seolah-olah itu adalah tabel atau tampilan. |
SEQUENTIAL EXECUTION |
Memaksa badan prosedur untuk dieksekusi secara berurutan tanpa paralelisme. |
<procedure_body> |
Bagian utama dari prosedur tersebut, ditulis dalam bahasa pemrograman yang dipilih. |
HEADER ONLY |
Hanya membuat properti prosedur dengan OID, tanpa mengkompilasi isi prosedur. Berguna untuk deklarasi awal. |
Contoh: Membuat Prosedur Tersimpan Sederhana
Contoh di bawah ini membuat prosedur hanya baca yang mengembalikan total penjualan untuk pelanggan tertentu.
CREATE PROCEDURE GET_CUSTOMER_SALES (
IN iv_customer_id NVARCHAR(10),
OUT ev_total DECIMAL(15,2)
)
LANGUAGE SQLSCRIPT
SQL SECURITY INVOKER
READS SQL DATA AS
BEGIN
SELECT SUM(NET_VALUE) INTO ev_total
FROM "SALES"."ORDERS"
WHERE CUSTOMER_ID = :iv_customer_id;
END;
Panggil prosedur tersebut dengan:
CALL GET_CUSTOMER_SALES ('C0001', ?);
SAP HANA Studio (atau klien JDBC/ODBC lainnya) mengembalikan nilai dari ev_total pada parameter output.
Memanggil Prosedur Tersimpan
Setelah dibuat, stored procedure dipanggil melalui CALL pernyataan tersebut, secara opsional di dalam prosedur lain, fungsi SQLScript, atau klien eksternal. Empat pola pemanggilan yang paling umum adalah:
- Dari SQL:
CALL my_proc(p1, p2, ?);โ placeholder mengembalikan nilai OUT. - Dari prosedur lain:
CALL another_proc(:in1, :out1); - Dari sebuah aplikasi: Mengikat parameter input dan membaca output melalui JDBC, ODBC, atau Cloud SDK.
- Sebagai meja virtual: Saat tampilan hasil dideklarasikan, lakukan kueri pada prosedur dengan perintah SELECT terhadap nama tampilan tersebut.
Praktik Terbaik untuk Prosedur Tersimpan HANA
Kebiasaan-kebiasaan di bawah ini menjaga agar prosedur HANA tetap mudah dibaca, berkinerja tinggi, dan mudah dipelihara:
- Beri nama parameter dengan awalan:
iv_untuk masukan,ev_untuk ekspor, daniov_untuk input/output. - Tandai maksud dengan READS SQL DATA di mana pun prosedur tersebut benar-benar hanya untuk dibaca.
- Gunakan SQL SECURITY INVOKER untuk prosedur bersama yang harus menghormati hak akses pemanggil.
- Bungkus setiap blok dengan BEGIN/END dan buat bagian inti tetap singkat โ bagi logika yang rumit menjadi prosedur-prosedur pendukung.
- Tangani pengecualian: menggunakan
DECLARE EXIT HANDLERuntuk pelaporan kesalahan yang baik. - Hindari SELECT * Di dalam prosedur โ beri nama kolom yang benar-benar Anda butuhkan agar rencana tetap stabil.
