Procédure stockée dans SAP HANA (Tutoriel SQL)
⚡ Résumé intelligent
SAP Une procédure stockée SQL HANA est un bloc de code SQLScript réutilisable et nommé qui effectue une opération sur des données spécifiques. Elle accepte les paramètres IN, OUT et INOUT, peut être marquée en lecture seule avec READS SQL DATA et est créée au niveau du schéma ou du package à l'aide de la syntaxe CREATE PROCEDURE.

Qu'est-ce qu'une procédure stockée SQL ?
A procédure stockée Une procédure est une unité de code nommée et réutilisable qui effectue une tâche spécifique. Les procédures peuvent être composées en programmes plus vastes, ce qui constitue le fondement de… conception modulaireUne procédure peut en appeler une autre ; l’appelant est appelé la procédure appelante. programme d'appel.
Les procédures sont des blocs de traitement réutilisables comportant une séquence définie de transformations de données. Elles peuvent accepter plusieurs paramètres d'entrée et de sortie et peuvent être déclarées en lecture seule ou en lecture-écriture.
An SQL procédure dans SAP HANA peut être créé à :
- Niveau de schéma (Nœud de catalogue) — géré par le catalogue et visible par chaque consommateur disposant des privilèges appropriés.
- Niveau du paquet (Nœud de contenu) — géré comme un artefact de conception au sein d'un package d'application.
SAP Syntaxe des procédures stockées HANA
La syntaxe générale pour créer une procédure dans SAP HANA est présenté ci-dessous.
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 }
Le CREATE PROCEDURE Cette instruction crée une procédure utilisant le langage de programmation spécifié par <lang>Le langage par défaut est SQLScript.
Explication des éléments syntaxiques
Le tableau ci-dessous décrit chaque clause utilisée dans la syntaxe CREATE PROCEDURE.
| Élément | Description |
|---|---|
<proc_name> |
Nom de la procédure. |
<parameter_clause> |
Liste des paramètres, chacun marqué IN, OUT ou INOUT : • IN — entrée en lecture seule transmise à la procédure. • ARCHIVER — résultat renvoyé par la procédure. • ENTRÉE — les deux transmettent une valeur en entrée et renvoient la valeur modifiée. |
LANGUAGE <lang> |
Langage de programmation utilisé dans la procédure. Par défaut : SQLSCRIPT. |
SQL SECURITY <mode> |
Mode de sécurité (par défaut : DEFINER) : • DÉFINEUR — s'exécute avec les privilèges du créateur de la procédure. • INVOCATEUR — s'exécute avec les privilèges de l'appelant. |
DEFAULT SCHEMA <default_schema_name> |
Schéma utilisé pour résoudre les objets non qualifiés dans le corps de la procédure. S'il est omis, le schéma de la session courante est utilisé. |
READS SQL DATA |
Indique que la procédure est en lecture seule. Elle ne peut ni modifier les données ni le schéma, ne contient aucune instruction DDL ou DML et ne peut qu'appeler d'autres procédures en lecture seule. |
WITH RESULT VIEW <view_name> |
Définit la vue de résultat utilisée comme sortie de la procédure. Lorsqu'une vue de résultat est présente, la procédure peut être interrogée par une autre. SQL déclaration comme s'il s'agissait d'un tableau ou d'une vue. |
SEQUENTIAL EXECUTION |
Force le corps de la procédure à s'exécuter séquentiellement, sans parallélisme. |
<procedure_body> |
Corps principal de la procédure, rédigée dans le langage de programmation sélectionné. |
HEADER ONLY |
Crée uniquement les propriétés de la procédure possédant un OID, sans compiler le corps. Utile pour les déclarations anticipées. |
Exemple : Créer une procédure stockée simple
L'exemple ci-dessous crée une procédure en lecture seule qui renvoie le total des ventes pour un client donné.
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;
Appelez la procédure avec :
CALL GET_CUSTOMER_SALES ('C0001', ?);
SAP HANA Studio (ou tout client JDBC/ODBC) renvoie la valeur de ev_total dans le paramètre de sortie.
Appel d'une procédure stockée
Une fois créée, une procédure stockée est appelée via la CALL instruction, éventuellement à l'intérieur d'une autre procédure, d'une fonction SQLScript ou d'un client externe. Les quatre schémas d'appel les plus courants sont :
- Depuis SQL :
CALL my_proc(p1, p2, ?);— Les espaces réservés renvoient des valeurs OUT. - D'une autre procédure :
CALL another_proc(:in1, :out1); - Extrait d'une application : Lier les paramètres d'entrée et lire la sortie via JDBC, ODBC ou le SDK Cloud.
- En tant que table virtuelle : Lorsqu'une vue de résultat est déclarée, interrogez la procédure avec une requête SELECT sur le nom de la vue.
Meilleures pratiques pour les procédures stockées HANA
Les bonnes pratiques ci-dessous permettent de garantir la lisibilité, la performance et la facilité de maintenance des procédures HANA :
- Paramètres de nommage avec préfixes :
iv_pour contribution,ev_pour l'exportation, etiov_pour l'entrée/sortie. - Marquer l'intention avec READS SQL DATA partout où la procédure est véritablement en lecture seule.
- Utiliser SQL SECURITY INVOKER pour les procédures partagées qui doivent respecter les privilèges de l'appelant.
- Encadrez chaque bloc par BEGIN/END et veillez à ce que le corps du texte reste concis — divisez la logique complexe en procédures auxiliaires.
- Gérer les exceptions : utilisé
DECLARE EXIT HANDLERpour un signalement d'erreurs élégant. - Évitez de sélectionner * Dans les procédures internes, nommez les colonnes dont vous avez réellement besoin afin que les plans restent stables.
