Αποθηκευμένη διαδικασία vs Λειτουργία
Οι αποθηκευμένες διαδικασίες και συναρτήσεις είναι δύο τύποι μπλοκ προγραμματισμού. Και οι δύο πρέπει να έχουν ονοματεπώνυμα. Αυτά τα ονόματα που καλούν χρησιμοποιούνται για την κλήση τους μέσα σε άλλο μπλοκ προγραμματισμού, όπως συναρτήσεις και πακέτα διαδικασιών ή ερωτήματα SQL. Και οι δύο αυτοί τύποι αντικειμένων δέχονται παραμέτρους και εκτελούν την εργασία πίσω από αυτά τα αντικείμενα. Αυτή είναι η σύνταξη (στο ORACLE) για τη δημιουργία μιας αποθηκευμένης διαδικασίας, δημιουργία ή αντικατάσταση ονόματος διαδικασίας (παράμετροι)
ως
αρχή
statements;
εξαίρεση
εξαίρεση_χειρισμός
τέλος;
Και εδώ είναι η σύνταξη για τη δημιουργία μιας συνάρτησης (στο ORACLE), create or αντικατάσταση συνάρτησης function_name (παράμετροι)
return return_datatype
ως
αρχή
statements;
return return_value/variable;
εξαίρεση;
εξαίρεση_χειρισμός;
τέλος;
Αποθηκευμένες διαδικασίες
Όπως αναφέρθηκε παραπάνω οι αποθηκευμένες διαδικασίες ονομάζονται μπλοκ προγραμματισμού. Δέχονται παραμέτρους ως είσοδο του χρήστη και επεξεργάζονται σύμφωνα με τη λογική πίσω από τη διαδικασία και δίνουν το αποτέλεσμα (ή εκτελούν μια συγκεκριμένη ενέργεια). Αυτές οι παράμετροι μπορεί να είναι τύπους IN, OUT και INOUT. Οι δηλώσεις μεταβλητών, οι εκχωρήσεις μεταβλητών, οι δηλώσεις ελέγχου, οι βρόχοι, τα ερωτήματα SQL και άλλες συναρτήσεις/διαδικασίες/κλήσεις πακέτων μπορούν να βρίσκονται μέσα στο σώμα των διαδικασιών.
Λειτουργίες
Οι συναρτήσεις ονομάζονται επίσης μπλοκ προγραμματισμού, τα οποία πρέπει να επιστρέψουν μια τιμή χρησιμοποιώντας τη δήλωση RETURN και πριν επιστρέψει μια τιμή, το σώμα της εκτελεί επίσης ορισμένες ενέργειες (σύμφωνα με τη δεδομένη λογική). Οι συναρτήσεις δέχονται επίσης παραμέτρους για εκτέλεση. Οι συναρτήσεις μπορούν να κληθούν μέσα στα ερωτήματα. Όταν μια συνάρτηση καλείται μέσα σε ένα ερώτημα SELECT, εφαρμόζεται σε κάθε γραμμή του συνόλου αποτελεσμάτων του ερωτήματος SELECT. Υπάρχουν διάφορες κατηγορίες συναρτήσεων ORACLE. Είναι,
Συναρτήσεις μονής σειράς (επιστρέφει ένα μόνο αποτέλεσμα για κάθε σειρά του ερωτήματος)
Υπάρχουν υποκατηγορίες συναρτήσεων μίας σειράς.
- Αριθμητική συνάρτηση (π.χ.: ABS, SIN, COS)
- Συνάρτηση χαρακτήρων (π.χ. CONCAT, INITCAP)
- Συνάρτηση ώρας ημερομηνίας (π.χ.: LAST_DAY, NEXT_DAY)
- Συναρτήσεις μετατροπής (π.χ.: TO_CHAR, TO_DATE)
- Λειτουργία συλλογής (π.χ. CARDINALITY, SET)
- Συγκεντρωτικές συναρτήσεις (Επιστρέφει μια μεμονωμένη σειρά, με βάση μια ομάδα σειρών. Π.χ.: AVG, SUM, MAX)
- Αναλυτικές συναρτήσεις
- Συναρτήσεις αναφοράς αντικειμένου
- Λειτουργίες μοντέλου
- Συναρτήσεις καθορισμένες από το χρήστη
Ποια είναι η διαφορά μεταξύ της λειτουργίας και της Αποθηκευμένης Διαδικασίας;
• Όλες οι συναρτήσεις πρέπει να επιστρέψουν μια τιμή χρησιμοποιώντας τη δήλωση RETURN. Οι αποθηκευμένες διαδικασίες δεν επιστρέφουν τιμές χρησιμοποιώντας τη δήλωση RETURN. Η δήλωση RETURN μέσα σε μια διαδικασία θα επιστρέψει τον έλεγχό της στο καλούν πρόγραμμα. Οι παράμετροι OUT μπορούν να χρησιμοποιηθούν για την επιστροφή τιμών από αποθηκευμένες διαδικασίες.
• Οι συναρτήσεις μπορούν να κληθούν μέσα στα ερωτήματα, αλλά οι αποθηκευμένες διαδικασίες δεν μπορούν να χρησιμοποιηθούν μέσα στα ερωτήματα.
• Ο τύπος δεδομένων RETURN πρέπει να περιλαμβάνεται για τη δημιουργία μιας συνάρτησης, αλλά στην αποθηκευμένη διαδικασία DDL, δεν είναι.