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.

  • 🧱 Choisissez où créer : Définissez les procédures au niveau du schéma (Catalogue) ou du package (Contenu) selon leur emplacement dans le SAP Modèle de données HANA.
  • (I.e. Utilisez les paramètres intentionnellement : IN transmet les entrées, OUT renvoie les sorties, INOUT fait les deux — nommez-les pour plus de clarté dans chaque signature.
  • (I.e. Choisissez SQL SECURITY avec soin : DEFINER s'exécute avec les privilèges du créateur ; INVOKER s'exécute avec ceux de l'appelant — à choisir en fonction de la politique d'accès aux données.
  • 📚 Marquer comme lecture seule lorsque cela est possible : READS SQL DATA documente l'intention, optimise la planification et permet d'exposer la procédure via une vue de résultat.
  • 🤖 Utiliser l'IA pour rédiger les procédures : Les assistants IA transforment la logique en langage clair en modèles CREATE PROCEDURE avec des paramètres, des gestionnaires d'exceptions et des vues de résultats.

SAP Procédure stockée SQL HANA

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, et iov_ 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 HANDLER pour 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.

FAQ

Une procédure peut avoir plusieurs paramètres de sortie, effectuer des opérations DML et est appelée avec CALL. Une fonction renvoie une seule valeur scalaire ou de table, s'exécute sans effets de bord et est utilisée dans les clauses SELECT, WHERE ou d'autres expressions.

Le langage par défaut et le plus courant est SQLScript. HANA prend également en charge R pour les procédures nécessitant des bibliothèques statistiques et L pour les scripts de bas niveau. SQLScript est le choix idéal pour la quasi-totalité des procédures métier.

DEFINER exécute la procédure avec les privilèges de l'utilisateur qui l'a créée ; cela s'avère utile lorsque la procédure doit accéder à des tables auxquelles l'appelant n'a pas accès directement. INVOKER s'exécute avec les privilèges de l'appelant, ce qui est plus sûr pour les procédures utilitaires partagées.

Utilisez READS SQL DATA lorsque la procédure se contente de lire des données sans jamais les écrire. Cela permet de documenter l'intention, d'afficher les résultats et d'optimiser la planification de la procédure de manière plus efficace.

Utilisez l'instruction CALL : CALL proc_name (in_val, out_param);Depuis une application, liez les entrées et les sorties via le pilote JDBC, ODBC ou Cloud SDK, ou exposez la procédure via OData pour les clients REST.

Abandonner une procédure avec DROP PROCEDURE proc_name; et recréez-la avec CREATE OR REPLACE PROCEDURE. SAP HANA ne prend pas en charge ALTER PROCEDURE ; le modèle standard est CREATE OR REPLACE.

Les assistants IA génèrent des modèles de procédure CREATE, suggèrent des noms de paramètres, rédigent des gestionnaires d'exceptions et traduisent la logique en langage naturel en SQLScript. Ils signalent également les qualifications de schéma manquantes et les opérations DML risquées dans les contextes en lecture seule.

Oui. Les outils d'IA annotent le SQLScript ligne par ligne, expliquant le rôle de chaque paramètre, la raison du choix d'une jointure particulière et les risques d'échec de la procédure en cas d'entrées incorrectes, ce qui accélère considérablement la revue de code et l'intégration.

Résumez cet article avec :