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.

  • ๐Ÿงฑ Pilih tempat untuk membuat: Definisikan prosedur pada tingkat skema (Katalog) atau paket (Konten) tergantung pada di mana prosedur tersebut berada. SAP Model data HANA.
  • ๐Ÿ“ฅ Gunakan parameter dengan sengaja: IN meneruskan input, OUT mengembalikan output, INOUT melakukan keduanya โ€” beri nama seperti itu untuk kejelasan di setiap tanda tangan.
  • ๐Ÿ” Pilih KEAMANAN SQL dengan hati-hati: DEFINER berjalan dengan hak akses pembuatnya; INVOKER berjalan dengan hak akses pemanggil โ€” pilih berdasarkan kebijakan akses data.
  • ๐Ÿ“š Tandai sebagai hanya baca jika memungkinkan: READS SQL DATA mendokumentasikan maksud, mengoptimalkan perencanaan, dan memungkinkan prosedur untuk ditampilkan melalui tampilan hasil.
  • ๐Ÿค– Gunakan AI untuk menyusun prosedur: Asisten AI mengubah logika bahasa Inggris biasa menjadi templat CREATE PROCEDURE dengan parameter, penanganan pengecualian, dan tampilan hasil.

SAP Prosedur Tersimpan SQL HANA

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, dan iov_ 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 HANDLER untuk pelaporan kesalahan yang baik.
  • Hindari SELECT * Di dalam prosedur โ€” beri nama kolom yang benar-benar Anda butuhkan agar rencana tetap stabil.

Pertanyaan Umum Demo Slot

Suatu prosedur dapat memiliki beberapa parameter OUT, dapat mengeluarkan perintah DML, dan dipanggil dengan CALL. Suatu fungsi mengembalikan nilai skalar atau tabel tunggal, berjalan tanpa efek samping, dan digunakan di dalam SELECT, WHERE, atau ekspresi lainnya.

Bahasa default dan yang paling umum digunakan adalah SQLScript. HANA juga mendukung R untuk prosedur yang membutuhkan pustaka statistik dan L untuk skrip tingkat rendah. SQLScript adalah pilihan yang tepat untuk hampir setiap prosedur bisnis.

DEFINER menjalankan prosedur dengan hak akses pengguna yang membuatnya โ€” berguna ketika prosedur tersebut harus mengakses tabel yang tidak dapat dilihat langsung oleh pemanggil. INVOKER berjalan dengan hak akses pemanggil, yang lebih aman untuk prosedur utilitas bersama.

Gunakan READS SQL DATA setiap kali prosedur hanya membaca data dan tidak pernah menuliskannya. Ini mendokumentasikan tujuan, memungkinkan tampilan hasil, dan memungkinkan pengoptimal merencanakan prosedur secara lebih agresif.

Gunakan pernyataan CALL: CALL proc_name (in_val, out_param);Dari sebuah aplikasi, ikat input dan output melalui driver JDBC, ODBC, atau Cloud SDK, atau ekspos prosedur melalui OData untuk klien REST.

Batalkan prosedur dengan DROP PROCEDURE proc_name; dan buat ulang dengan CREATE OR REPLACE PROCEDURE. SAP HANA tidak mendukung ALTER PROCEDURE; pola standarnya adalah CREATE OR REPLACE.

Asisten AI menghasilkan templat CREATE PROCEDURE, menyarankan nama parameter, menulis penanganan pengecualian, dan menerjemahkan logika bahasa Inggris biasa ke dalam SQLScript. Mereka juga menunjukkan kualifikasi skema yang hilang dan DML berisiko di dalam konteks baca-saja.

Ya. Alat AI memberi anotasi pada SQLScript baris demi baris โ€” menjelaskan fungsi setiap parameter, mengapa join tertentu dipilih, dan di mana prosedur mungkin gagal jika input salah โ€” sehingga proses peninjauan kode dan pelatihan menjadi jauh lebih cepat.

Ringkaslah postingan ini dengan: