Pohranjena procedura u SAP HANA (SQL vodič)
⚡ Pametni sažetak
SAP HANA SQL pohranjena procedura je višekratno upotrebljiv, imenovani blok SQLScript-a koji izvodi određenu operaciju s podacima. Prihvaća parametre IN, OUT i INOUT, može se označiti kao samo za čitanje s READS SQL DATA i stvara se na razini sheme ili paketa pomoću sintakse CREATE PROCEDURE.

Što je SQL pohranjena procedura?
A pohranjena procedura je imenovana, ponovno upotrebljiva jedinica koda koja izvršava određeni zadatak. Procedure se mogu sastaviti u veće programe, što je temelj Modularni dizajnJedna procedura može pozvati drugu - pozivatelj se naziva pozivanje programa.
Procedure su blokovi za obradu koji se mogu ponovno koristiti s definiranim slijedom transformacija podataka. Mogu prihvatiti više ulaznih i izlaznih parametara i mogu se deklarirati samo za čitanje ili za čitanje i pisanje.
An SQL postupak u SAP HANNA može se kreirati na:
- Razina sheme (Čvor kataloga) — upravlja se putem kataloga i vidljiv je svakom potrošaču s odgovarajućim privilegijama.
- Razina paketa (Čvor sadržaja) — upravlja se kao artefakt u vrijeme dizajniranja unutar aplikacijskog paketa.
SAP Sintaksa pohranjenih procedura HANA
Opća sintaksa za stvaranje procedure u SAP HANA je prikazana dolje.
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 naredba stvara proceduru koristeći programski jezik određen od <lang>Zadani jezik je SQLScript.
Objašnjenje sintaktičkih elemenata
Donja tablica opisuje svaku klauzulu korištenu u sintaksi CREATE PROCEDURE.
| Element | Description |
|---|---|
<proc_name> |
Naziv postupka. |
<parameter_clause> |
Popis parametara, svaki označen s IN, OUT ili INOUT: • IN — ulaz samo za čitanje proslijeđen proceduri. • OUT — izlaz vraćen iz postupka. • IZLAZ — i prosljeđuje vrijednost i vraća modificiranu vrijednost. |
LANGUAGE <lang> |
Programski jezik korišten u postupku. Zadano: SQLSCRIPT. |
SQL SECURITY <mode> |
Sigurnosni način rada (zadano: DEFINER): • DEFINITOR — pokreće se s privilegijama kreatora procedure. • POZIVAC — izvodi se s privilegijama pozivatelja. |
DEFAULT SCHEMA <default_schema_name> |
Shema koja se koristi za rješavanje nekvalificiranih objekata u tijelu procedure. Ako se izostavi, koristi se shema trenutne sesije. |
READS SQL DATA |
Označava proceduru kao samo za čitanje. Ne može mijenjati podatke ili shemu, ne sadrži DDL ili DML i može pozivati samo druge procedure samo za čitanje. |
WITH RESULT VIEW <view_name> |
Definira prikaz rezultata koji se koristi kao izlaz procedure. Kada je prikaz rezultata prisutan, proceduru može upitati drugi SQL izjava kao da je tablica ili pogled. |
SEQUENTIAL EXECUTION |
Prisiljava tijelo procedure da se izvršava sekvencijalno bez paralelizma. |
<procedure_body> |
Glavni dio postupka, napisan u odabranom programskom jeziku. |
HEADER ONLY |
Stvara samo svojstva procedure s OID-om, bez kompajliranja tijela. Korisno za deklaracije unaprijed. |
Primjer: Izrada jednostavne pohranjene procedure
Primjer u nastavku stvara proceduru samo za čitanje koja vraća ukupnu prodaju za zadanog kupca.
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;
Pozovite proceduru sa:
CALL GET_CUSTOMER_SALES ('C0001', ?);
SAP HANA Studio (ili bilo koji JDBC/ODBC klijent) vraća vrijednost od ev_total u izlaznom parametru.
Pozivanje pohranjene procedure
Nakon što je kreirana, pohranjena procedura se poziva putem CALL naredbe, opcionalno unutar druge procedure, SQLScript funkcije ili vanjskog klijenta. Četiri najčešća obrasca pozivanja su:
- Iz SQL-a:
CALL my_proc(p1, p2, ?);— rezervirana mjesta vraćaju OUT vrijednosti. - Iz drugog postupka:
CALL another_proc(:in1, :out1); - Iz aplikacije: povezivanje ulaznih parametara i čitanje izlaza putem JDBC-a, ODBC-a ili Cloud SDK-a.
- Kao virtualna tablica: Kada se deklarira prikaz rezultata, upitajte proceduru s SELECT-om prema nazivu prikaza.
Najbolje prakse za HANA pohranjene procedure
Sljedeće navike održavaju HANA procedure čitljivima, učinkovitima i jednostavnima za održavanje:
- Imenujte parametre s prefiksima:
iv_za unos,ev_za izvoz, iiov_za ulaz/izlaz. - Označi namjeru s READS SQL DATA gdje god je postupak zaista samo za čitanje.
- Koristite SQL SECURITY INVOKER za dijeljene postupke koji bi trebali poštivati privilegije pozivatelja.
- Zamotajte svaki blok u BEGIN/END i tijelo neka bude kratko — tešku logiku podijelite na pomoćne procedure.
- Obrada iznimki: koristiti
DECLARE EXIT HANDLERza elegantno prijavljivanje grešaka. - Izbjegavajte ODABERI * unutar procedura — imenujte stupce koji su vam zapravo potrebni kako bi planovi ostali stabilni.
