Διαφορά μεταξύ UDF και αποθηκευμένης διαδικασίας σε SQL Διαφορά μεταξύ

Anonim

UDF εναντίον αποθηκευμένης διαδικασίας σε SQL

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

Διαφορές

Η πρώτη διαφορά που παρατηρείται με τη συνάρτηση που ορίζει ο χρήστης είναι ότι είναι προγραμματισμένη με τέτοιο τρόπο ώστε να πρέπει να επιστρέψει μια τιμή. Η αποθηκευμένη διαδικασία έχει κάποια πιθανότητα να επιστρέψει ή όχι μια τιμή. Αυτό εξαρτάται από το εάν η αποθηκευμένη διαδικασία έχει ή όχι αξία για επιστροφή.

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

Η συνάρτηση που έχει οριστεί από το χρήστη επιτρέπει την εισαγωγή μόνο παραμέτρων αλλά δεν υποστηρίζει την παραγωγή των ίδιων παραμέτρων. Η αποθηκευμένη διαδικασία, αντίθετα, υποστηρίζει τόσο τις παραμέτρους εισόδου όσο και εξόδου. Το UDF δεν επιτρέπει επίσης τη χρήση μπλοκ try-catch. Η αποθηκευμένη διαδικασία επιτρέπει τη χρήση των δοκιμαστικών μπλοκ συλλογής για χειρισμό εξαιρέσεων.

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

Όταν σε μια λειτουργία, το UDF δεν επιτρέπει την κλήση αποθηκευμένων πινάκων από αυτό. Αυτό είναι τελείως διαφορετικό όταν πρόκειται για αποθηκευμένη διαδικασία, η οποία επιτρέπει την κλήση της λειτουργίας χωρίς κανένα περιορισμό. Όταν με λειτουργίες, το UDF δεν επιτρέπει την κλήση των εν λόγω λειτουργιών από μια επιλεγμένη εντολή. Η αποθηκευμένη διαδικασία υποστηρίζει επίσης ότι δεν είναι δυνατή η κλήση διαδικασιών από τις καταστάσεις "Πού / Επιλογή" και "Έχοντας". Το Exec ή το Execute μπορεί ωστόσο να χρησιμοποιηθεί για να καλέσει ή ακόμα και να εκτελέσει την αποθηκευμένη διαδικασία. Τελευταίο αλλά όχι ασήμαντο είναι ότι το UDF μπορεί να χρησιμοποιηθεί για τη δημιουργία μιας ρήτρας συμμετοχής, αξιοποιώντας το σύνολο αποτελεσμάτων. Σε αποθηκευμένη διαδικασία, αυτό δεν είναι εφικτό, καθώς δεν επιτρέπονται διαδικασίες σε ρήτρα συγχώνευσης. Είναι επίσης σημαντικό να σημειωθεί ότι η αποθηκευμένη διαδικασία επιτρέπει την επιστροφή σε μηδενικές ή ακόμα και n τιμές, ενώ το UDF μπορεί να επιστρέψει μόνο σε μία συγκεκριμένη και προκαθορισμένη τιμή που είναι προκαθορισμένη.

Περίληψη

Είναι υποχρεωτική για τη λειτουργία να επιστρέψει μια τιμή ενώ δεν είναι για αποθηκευμένη διαδικασία.

Επιλέξτε δηλώσεις που γίνονται δεκτές μόνο στο UDF, ενώ δεν απαιτούνται δηλώσεις DML.

Η αποθηκευμένη διαδικασία δέχεται οποιεσδήποτε δηλώσεις καθώς και δηλώσεις DML.

Το UDF επιτρέπει μόνο εισόδους και όχι εξόδους.

Η αποθηκευμένη διαδικασία επιτρέπει και τις εισόδους και τις εξόδους.

Τα μπλοκ αλιευμάτων δεν μπορούν να χρησιμοποιηθούν στο UDF αλλά μπορούν να χρησιμοποιηθούν σε αποθηκευμένη διαδικασία.

Δεν επιτρέπονται συναλλαγές στις λειτουργίες του UDF αλλά σε αποθηκευμένη διαδικασία επιτρέπονται.

Μόνο μεταβλητές πίνακα μπορούν να χρησιμοποιηθούν σε UDF και όχι σε προσωρινούς πίνακες.

Η αποθηκευμένη διαδικασία επιτρέπει και τις μεταβλητές πίνακα και τους προσωρινούς πίνακες.

Το UDF δεν επιτρέπει την κλήση αποθηκευμένων διαδικασιών από λειτουργίες ενώ οι αποθηκευμένες διαδικασίες επιτρέπουν την κλήση λειτουργιών.

Το UDF χρησιμοποιείται στη ρήτρα join ενώ οι αποθηκευμένες διαδικασίες δεν μπορούν να χρησιμοποιηθούν στη ρήτρα join.

Η αποθηκευμένη διαδικασία θα επιτρέπει πάντα την επιστροφή στο μηδέν. Το UDF, αντίθετα, έχει αξίες που πρέπει να επανέλθουν σε ένα προκαθορισμένο σημείο.