Αποθηκευμένη διαδικασία σε SAP HANA (Εκμάθηση SQL)

⚡ Έξυπνη Σύνοψη

SAP Η αποθηκευμένη διαδικασία HANA SQL είναι ένα επαναχρησιμοποιήσιμο, επώνυμο μπλοκ SQLScript που εκτελεί μια συγκεκριμένη λειτουργία δεδομένων. Δέχεται παραμέτρους IN, OUT και INOUT, μπορεί να επισημανθεί ως μόνο για ανάγνωση με READS SQL DATA και δημιουργείται σε επίπεδο σχήματος ή πακέτου χρησιμοποιώντας τη σύνταξη CREATE PROCEDURE.

  • 🧱 Επιλέξτε πού θα δημιουργήσετε: Ορίστε διαδικασίες σε επίπεδο σχήματος (Κατάλογος) ή πακέτου (Περιεχόμενο) ανάλογα με το πού ανήκουν στο SAP Μοντέλο δεδομένων HANA.
  • 📥 Χρησιμοποιήστε παραμέτρους σκόπιμα: Το IN μεταβιβάζει την είσοδο, το OUT επιστρέφει την έξοδο, το INOUT κάνει και τα δύο — ονομάστε τα για λόγους σαφήνειας σε κάθε υπογραφή.
  • 🔐 Επιλέξτε προσεκτικά την ασφάλεια SQL: Το DEFINER εκτελείται με τα δικαιώματα του δημιουργού. Το INVOKER εκτελείται με τα δικαιώματα του καλούντος — επιλογή βάσει πολιτικής πρόσβασης δεδομένων.
  • 📚 Σήμανση ως μόνο για ανάγνωση όταν είναι δυνατόν: Η λειτουργία READS SQL DATA καταγράφει την πρόθεση, βελτιστοποιεί τον σχεδιασμό και επιτρέπει την έκθεση της διαδικασίας μέσω μιας προβολής αποτελεσμάτων.
  • 🤖 Χρησιμοποιήστε την Τεχνητή Νοημοσύνη για τη σύνταξη διαδικασιών: Οι βοηθοί τεχνητής νοημοσύνης μετατρέπουν την απλή λογική σε πρότυπα CREATE PROCEDURE με παραμέτρους, χειριστές εξαιρέσεων και προβολές αποτελεσμάτων.

SAP Αποθηκευμένη διαδικασία HANA SQL

Τι είναι μια αποθηκευμένη διαδικασία SQL;

A αποθηκευμένη διαδικασία είναι μια επώνυμη, επαναχρησιμοποιήσιμη μονάδα κώδικα που εκτελεί μια συγκεκριμένη εργασία. Οι διαδικασίες μπορούν να συντεθούν σε μεγαλύτερα προγράμματα, τα οποία αποτελούν τη βάση του Αρθρωτό σχεδιασμόΜία διαδικασία μπορεί να καλέσει μια άλλη — ο καλών αναφέρεται ως πρόγραμμα κλήσεων.

Οι διαδικασίες είναι επαναχρησιμοποιήσιμα μπλοκ επεξεργασίας με μια καθορισμένη ακολουθία μετασχηματισμών δεδομένων. Μπορούν να δεχτούν πολλαπλές παραμέτρους εισόδου και εξόδου και μπορούν να δηλωθούν ως μόνο για ανάγνωση ή για ανάγνωση-εγγραφή.

An SQL διαδικασία σε SAP HANA μπορεί να δημιουργηθεί στη διεύθυνση:

  • Επίπεδο σχήματος (Κόμβος καταλόγου) — διαχειρίζεται μέσω του καταλόγου και είναι ορατό σε κάθε καταναλωτή με τα κατάλληλα δικαιώματα.
  • Επίπεδο πακέτου (Κόμβος περιεχομένου) — διαχειρίζεται ως τεχνούργημα χρόνου σχεδίασης μέσα σε ένα πακέτο εφαρμογής.

SAP Σύνταξη αποθηκευμένης διαδικασίας HANA

Η γενική σύνταξη για τη δημιουργία μιας διαδικασίας στο SAP Το HANA εμφανίζεται παρακάτω.

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 Η εντολή δημιουργεί μια διαδικασία χρησιμοποιώντας τη γλώσσα προγραμματισμού που καθορίζεται από <lang>Η προεπιλεγμένη γλώσσα είναι η SQLScript.

Εξήγηση στοιχείων σύνταξης

Ο παρακάτω πίνακας περιγράφει κάθε όρο που χρησιμοποιείται στη σύνταξη CREATE PROCEDURE.

Στοιχείο Περιγραφή
<proc_name> Όνομα της διαδικασίας.
<parameter_clause> Λίστα παραμέτρων, καθεμία από τις οποίες σημειώνεται με IN, OUT ή INOUT:
IN — είσοδος μόνο για ανάγνωση που διαβιβάζεται στη διαδικασία.
OUT — αποτέλεσμα που επιστρέφεται από τη διαδικασία.
ΕΙΣΟΔΟΣ — και περνάει μια τιμή και επιστρέφει την τροποποιημένη τιμή.
LANGUAGE <lang> Γλώσσα προγραμματισμού που χρησιμοποιείται στη διαδικασία. Προεπιλογή: SQLSCRIPT.
SQL SECURITY <mode> Λειτουργία ασφαλείας (Προεπιλογή: DEFINER):
ΟΡΙΣΤΗΣ — εκτελείται με τα δικαιώματα του δημιουργού της διαδικασίας.
ΕΚΚΛΗΤΗΣ — εκτελείται με τα προνόμια του καλούντος.
DEFAULT SCHEMA <default_schema_name> Σχήμα που χρησιμοποιείται για την επίλυση μη εξειδικευμένων αντικειμένων στο σώμα της διαδικασίας. Εάν παραλειφθεί, χρησιμοποιείται το τρέχον σχήμα συνεδρίας.
READS SQL DATA Σημειώνει τη διαδικασία ως μόνο για ανάγνωση. Δεν μπορεί να τροποποιήσει δεδομένα ή σχήμα, δεν περιέχει DDL ή DML και μπορεί μόνο να καλέσει άλλες διαδικασίες μόνο για ανάγνωση.
WITH RESULT VIEW <view_name> Ορίζει την προβολή αποτελεσμάτων που χρησιμοποιείται ως έξοδος της διαδικασίας. Όταν υπάρχει μια προβολή αποτελεσμάτων, η διαδικασία μπορεί να ερωτηθεί από μια άλλη. SQL πρόταση σαν να ήταν πίνακας ή προβολή.
SEQUENTIAL EXECUTION Αναγκάζει το σώμα της διαδικασίας να εκτελεστεί διαδοχικά χωρίς παραλληλισμό.
<procedure_body> Κύριο σώμα της διαδικασίας, γραμμένο στην επιλεγμένη γλώσσα προγραμματισμού.
HEADER ONLY Δημιουργεί μόνο τις ιδιότητες της διαδικασίας με ένα OID, χωρίς μεταγλώττιση του σώματος. Χρήσιμο για δηλώσεις προώθησης.

Παράδειγμα: Δημιουργία απλής αποθηκευμένης διαδικασίας

Το παρακάτω παράδειγμα δημιουργεί μια διαδικασία μόνο για ανάγνωση που επιστρέφει το σύνολο των πωλήσεων για έναν δεδομένο πελάτη.

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;

Καλέστε τη διαδικασία με:

CALL GET_CUSTOMER_SALES ('C0001', ?);

SAP Το HANA Studio (ή οποιοδήποτε πρόγραμμα-πελάτης JDBC/ODBC) επιστρέφει την τιμή ev_total στην παράμετρο εξόδου.

Κλήση μιας αποθηκευμένης διαδικασίας

Μόλις δημιουργηθεί, μια αποθηκευμένη διαδικασία καλείται μέσω του CALL πρόταση, προαιρετικά μέσα σε μια άλλη διαδικασία, μια συνάρτηση SQLScript ή έναν εξωτερικό πελάτη. Τα τέσσερα πιο συνηθισμένα μοτίβα κλήσης είναι:

  • Από SQL: CALL my_proc(p1, p2, ?); — τα placeholders επιστρέφουν τιμές OUT.
  • Από μια άλλη διαδικασία: CALL another_proc(:in1, :out1);
  • Από μια εφαρμογή: συνδέστε τις παραμέτρους εισόδου και διαβάστε την έξοδο μέσω JDBC, ODBC ή του Cloud SDK.
  • Ως εικονικός πίνακας: Όταν δηλώνεται μια προβολή αποτελέσματος, υποβάλλεται ερώτημα στη διαδικασία με SELECT στο όνομα της προβολής.

Καλυτερα Πρακτικές για Αποθηκευμένες Διαδικασίες HANA

Οι παρακάτω συνήθειες διατηρούν τις διαδικασίες HANA ευανάγνωστες, αποδοτικές και εύκολες στη συντήρηση:

  • Ονομάστε τις παραμέτρους με προθέματα: iv_ για εισαγωγή, ev_ για εξαγωγή, και iov_ για είσοδο/έξοδο.
  • Σήμανση πρόθεσης με READS SQL DATA όπου η διαδικασία είναι πραγματικά μόνο για ανάγνωση.
  • Χρήση του SQL SECURITY INVOKER για κοινές διαδικασίες που θα πρέπει να σέβονται τα προνόμια του καλούντος.
  • Τυλίξτε κάθε μπλοκ σε BEGIN/END και διατηρήστε το κυρίως μέρος σύντομο — χωρίστε τη βαριά λογική σε βοηθητικές διαδικασίες.
  • Χειρισμός εξαιρέσεων: χρήση DECLARE EXIT HANDLER για ομαλή αναφορά σφαλμάτων.
  • Αποφύγετε την ΕΠΙΛΟΓΗ * inside procedures — ονομάστε τις στήλες που πραγματικά χρειάζεστε, ώστε τα σχέδια να παραμένουν σταθερά.

Συχνές Ερωτήσεις

Μια διαδικασία μπορεί να έχει πολλαπλές παραμέτρους OUT, μπορεί να εκδώσει DML και καλείται με CALL. Μια συνάρτηση επιστρέφει μια μεμονωμένη βαθμωτή τιμή ή τιμή πίνακα, εκτελείται χωρίς παρενέργειες και χρησιμοποιείται μέσα σε SELECT, WHERE ή άλλες παραστάσεις.

Η προεπιλεγμένη και πιο κοινή γλώσσα είναι η SQLScript. Η HANA υποστηρίζει επίσης R για διαδικασίες που χρειάζονται στατιστικές βιβλιοθήκες και L για δέσμες ενεργειών χαμηλού επιπέδου. Η SQLScript είναι η σωστή επιλογή για σχεδόν κάθε επιχειρηματική διαδικασία.

Το DEFINER εκτελεί τη διαδικασία με τα δικαιώματα του χρήστη που τη δημιούργησε — χρήσιμο όταν η διαδικασία πρέπει να έχει πρόσβαση σε πίνακες που ο καλών δεν μπορεί να δει απευθείας. Το INVOKER εκτελείται με τα δικαιώματα του καλούντος, κάτι που είναι ασφαλέστερο για διαδικασίες κοινόχρηστης χρησιμότητας.

Χρησιμοποιήστε το READS SQL DATA κάθε φορά που η διαδικασία διαβάζει μόνο δεδομένα και δεν τα γράφει ποτέ. Καταγράφει την πρόθεση, επιτρέπει προβολές αποτελεσμάτων και επιτρέπει στον βελτιστοποιητή να σχεδιάσει τη διαδικασία πιο επιθετικά.

Χρησιμοποιήστε την πρόταση CALL: CALL proc_name (in_val, out_param);Από μια εφαρμογή, συνδέστε εισόδους και εξόδους μέσω του προγράμματος οδήγησης JDBC, ODBC ή Cloud SDK ή εκθέστε τη διαδικασία μέσω του OData για πελάτες REST.

Αφήστε μια διαδικασία με DROP PROCEDURE proc_name; και δημιουργήστε το ξανά με τη ΔΙΑΔΙΚΑΣΙΑ CREATE OR REPLACE. SAP Το HANA δεν υποστηρίζει τη ΔΙΑΔΙΚΑΣΙΑ ALTER. Το τυπικό μοτίβο είναι CREATE OR REPLACE.

Οι βοηθοί τεχνητής νοημοσύνης δημιουργούν πρότυπα CREATE PROCEDURE, προτείνουν ονόματα παραμέτρων, γράφουν χειριστές εξαιρέσεων και μεταφράζουν απλή αγγλική λογική σε SQLScript. Επίσης, επισημαίνουν ελλείποντα προσόντα σχήματος και επικίνδυνη DML σε περιβάλλοντα μόνο για ανάγνωση.

Ναι. Τα εργαλεία τεχνητής νοημοσύνης σχολιάζουν το SQLScript γραμμή προς γραμμή — εξηγώντας τι κάνει κάθε παράμετρος, γιατί επιλέχθηκε μια συγκεκριμένη σύνδεση και πού η διαδικασία ενδέχεται να αποτύχει με λανθασμένες εισόδους — καθιστώντας την αναθεώρηση και την ενσωμάτωση κώδικα πολύ πιο γρήγορη.

Συνοψίστε αυτήν την ανάρτηση με: