Procedură stocată în SAP HANA (Tutorial SQL)
⚡ Rezumat inteligent
SAP Procedura stocată HANA SQL este un bloc reutilizabil, denumit, de SQLScript, care efectuează o operațiune specifică cu date. Acceptă parametrii IN, OUT și INOUT, poate fi marcată ca doar citire cu READS SQL DATA și este creată la nivel de schemă sau pachet folosind sintaxa CREATE PROCEDURE.
Ce este o procedură stocată SQL?
A procedură stocată este o unitate de cod denumită și reutilizabilă care îndeplinește o sarcină specifică. Procedurile pot fi compuse în programe mai mari, ceea ce reprezintă fundamentul design modularO procedură poate apela o alta — apelantul este denumit program de apelare.
Procedurile sunt blocuri de procesare reutilizabile cu o secvență definită de transformări de date. Acestea pot accepta mai mulți parametri de intrare și ieșire și pot fi declarate doar pentru citire sau citire-scriere.
An SQL procedura in SAP HANA poate fi creat la:
- Nivelul schemei (Nod de catalog) — gestionat prin intermediul catalogului și vizibil pentru fiecare consumator cu privilegiile corespunzătoare.
- Nivelul pachetului (Nod de conținut) — gestionat ca un artefact în timpul designului în interiorul unui pachet de aplicație.
SAP Sintaxa procedurii stocate HANA
Sintaxa generală pentru crearea unei proceduri în SAP HANA este prezentat mai jos.
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 }
CREATE PROCEDURE Instrucțiunea creează o procedură folosind limbajul de programare specificat de <lang>Limbajul implicit este SQLScript.
Elemente sintactice explicate
Tabelul de mai jos descrie fiecare clauză utilizată în sintaxa CREATE PROCEDURE.
| Element | Descriere |
|---|---|
<proc_name> |
Numele procedurii. |
<parameter_clause> |
Listă de parametri, fiecare marcat IN, OUT sau INOUT: • IN — intrare doar pentru citire transmisă procedurii. • OUT — ieșirea returnată de procedură. • ÎN AFARĂ — transmite o valoare și returnează valoarea modificată. |
LANGUAGE <lang> |
Limbaj de programare utilizat în procedură. Implicit: SQLSCRIPT. |
SQL SECURITY <mode> |
Mod de securitate (implicit: DEFINITOR): • DEFINITOR — rulează cu privilegiile creatorului procedurii. • INVOCATOR — rulează cu privilegiile apelantului. |
DEFAULT SCHEMA <default_schema_name> |
Schemă utilizată pentru rezolvarea obiectelor necalificate din corpul procedurii. Dacă este omisă, se utilizează schema sesiunii curente. |
READS SQL DATA |
Marchează procedura ca fiind doar pentru citire. Nu poate modifica date sau scheme, nu conține DDL sau DML și poate apela doar alte proceduri doar pentru citire. |
WITH RESULT VIEW <view_name> |
Definește vizualizarea rezultatelor utilizată ca ieșire a procedurii. Când este prezentă o vizualizare a rezultatelor, procedura poate fi interogată de o altă persoană. SQL instrucțiune ca și cum ar fi un tabel sau o vizualizare. |
SEQUENTIAL EXECUTION |
Forțează corpul procedurii să se execute secvențial, fără paralelism. |
<procedure_body> |
Corpul principal al procedurii, scris în limbajul de programare selectat. |
HEADER ONLY |
Creează doar proprietățile procedurii cu un OID, fără a compila corpul. Util pentru declarații înainte. |
Exemplu: Creați o procedură stocată simplă
Exemplul de mai jos creează o procedură doar în citire care returnează totalul vânzărilor pentru un anumit client.
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;
Apelați procedura cu:
CALL GET_CUSTOMER_SALES ('C0001', ?);
SAP HANA Studio (sau orice client JDBC/ODBC) returnează valoarea ev_total în parametrul de ieșire.
Apelarea unei proceduri stocate
Odată creată, o procedură stocată este invocată prin intermediul CALL instrucțiune, opțional în interiorul unei alte proceduri, a unei funcții SQLScript sau a unui client extern. Cele patru modele de invocare cele mai comune sunt:
- Din SQL:
CALL my_proc(p1, p2, ?);— substituenții returnează valori OUT. - Dintr-o altă procedură:
CALL another_proc(:in1, :out1); - Dintr-o aplicație: legarea parametrilor de intrare și citirea ieșirii prin JDBC, ODBC sau SDK-ul Cloud.
- Ca tabel virtual: Când este declarată o vizualizare a rezultatelor, interogați procedura cu o comandă SELECT pentru numele vizualizării.
Cele mai bune practici pentru procedurile stocate HANA
Obiceiurile de mai jos mențin procedurile HANA lizibile, performante și ușor de întreținut:
- Denumiți parametrii cu prefixe:
iv_pentru introducere,ev_pentru export șiiov_pentru intrare/ieșire. - Marcați intenția cu READS SQL DATA oriunde procedura este într-adevăr doar pentru citire.
- Utilizați INVOCATORUL DE SECURITATE SQL pentru proceduri partajate care ar trebui să respecte privilegiile apelantului.
- Încadrați fiecare bloc în BEGIN/END și mențineți corpul scurt — împărțiți logica complexă în proceduri auxiliare.
- Gestionarea excepțiilor: utilizare
DECLARE EXIT HANDLERpentru raportarea elegantă a erorilor. - Evitați SELECT * în cadrul procedurilor — denumiți coloanele de care aveți nevoie pentru ca planurile să rămână stabile.

