Αποθηκευμένες Διαδικασίες Stored Routines (Procedures & Functions)



Σχετικά έγγραφα
Εργαστήριο Βάσεων Δεδομένων. Triggers

PL/SQL. Κώστας Στεφανίδης

Βάσεις δεδομένων. (10 ο μάθημα) Ηρακλής Βαρλάμης

Ενεργές ΒΔ. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Βάσεις Δεδομένων Ενεργές ΒΔ 1

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΙI

ΕΝΑΥΣΜΑΤΑ ΣΤΗΝ POSTGRES

. Εργαστήριο Βάσεων Δεδομένων. Triggers

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

MySQL stored procedures

MySQL + Γλώσσα Προγραμματισμού. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Ορισμοί Σχεσιακού Μοντέλου και (απλές)τροποποιήσεις Σχέσεων στην SQL. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΕΠΛ 342 Βάσεις εδοµένων

9η Εργαστηριακή Άσκηση: Stored Procedures - Triggers. Αποθηκευμένες Διαδικασίες (Stored Procedures):

Εργαστήριο βάσεων δεδομένων. MySQL Stored Procedures

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι Ενότητα 3:

H SQL είναι η γλώσσα για όλα τα εμπορικά σχεσιακά συστήματα διαχείρισης βάσεων δεδομένων

Postgress ΣΤΟΧΟΣ ΣΧΕΤΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ ΥΛΙΚΟ. ΠΕΡΙΒΑΛΛΟΝ ΓΙΑ ΕΞΑΣΚΗΣΗ pgadmin ΥΠΟΒΑΘΡΟ. Συναρτήσεις στην PostgreSQL. 1. Γενικά

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 9β: SQL (Διαχείριση εγγραφών, Όψεις, Περιορισμοί, Εναύσματα) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Εργαστήριο Βάσεων Δεδομένων. Δικαιώματα Χρηστών Προβολές

Σχεδιασμός Βάσεων Δεδομένων

Εργαστήριο Βάσεων Δεδομένων

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Βάσεις Δεδομένων ΗγλώσσαSQL (Structured Query Language)

Βάσεις Δεδομένων Η γλώσσα SQL (Structured Query Language) Εισαγωγή στην SQL (2) Ιστορικά Στοιχεία. SQL - Structured Query Language (1)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

ΑΠΟΘΗΚΕΥΜΕΝΕΣ ΔΙΑΔΙΚΑΣΙΕΣ

ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΓΡΕΒΕΝΑ)

Βάσεις Περιβαλλοντικών Δεδομένων

Βάσεις Δεδομένων. Βασίλειος Βεσκούκης Εισαγωγή στη γλώσσα SQL (Structured Query Language) Η γλώσσα SQL

Διάλεξη 17: Προγραμματισμός Βάσης Δεδομένων Ι. Διδάσκων: Παναγιώτης Ανδρέου

Ανάκτηση Δεδομένων (Information Retrieval)

Ορισµοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

ΘΕΜΑΤΑ. Ερώτηση 1 Κατά τη Φυσική Αποθήκευση (Physical storage) μιας ΒΔ αποθηκεύονται στον δίσκο τα:

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε.

. Εργαστήριο Βάσεων Δεδομένων. Stored Procedures

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ. Ε. Χρήσιμοι Σύνδεσμοι

Η SQL αποτελείται από δύο υποσύνολα, τη DDL και τη DML.

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 9α: Περιορισμοί (Constraints) Εναύσματα (Triggers) Ευαγγελίδης Γεώργιος Τμήμα Εφαρμοσμένης Πληροφορικής

PostgreSQL. Oracle. Εαρινό Εξάμηνο

ΣΧΕΔΙΑΣΜΟΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ ΕΡΓΑΣΤΗΡΙΟ 3

Τμήμα Διοίκησης Επιχειρήσεων

Ακεραιότητα και Ασφάλεια Μέρος 1 Σχεδιασμός Βάσεων Δεδομένων

Lecture 19: Internal DB Programming II

Σχεδιασμός Πληροφοριακών Συστημάτων. Σημειώσεις

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

Διάλεξη 02: Βάσεις Δεδομένων Εισαγωγή. Διδάσκων: Παναγιώτης Ανδρέου


Έχουµε την βάση της σχολής που αποτελείται από τους παρακάτω πίνακες.

10 η Διάλεξη Python Βάσεις δεδομένων στη python

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #3

Κεφάλαιο 12 Υλοποίηση Stored Procedures, Χρήση Ευρετηρίων

ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ

Βάσεις Δεδομένων Ι SQL Μέρος 3 ο. (Constraints & Joins) Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Επιλέγει όλες τις πλειάδες, από μια σχέση R, που ικανοποιούν τη συνθήκη επιλογής.

databases linux - terminal (linux / windows terminal)

Σχεδίαση και Χρήση Βάσεων Δεδομένων. Χρήση της MySQL. Γιώργος Πυρουνάκης -

Διαχείριση Πολιτισμικών Δεδομένων

Τεχνολογία Πολιτισμικού Λογισμικού

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 3) Ουρανία Σμυρνάκη

Ηλεκτρονικοί Υπολογιστές II

Εργαστήριο Βάσεων Δεδομένων

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Μανουσόπουλος Χρήστος

Προσοµοίωση τροχιάς σε Oracle Spatial 8i DBMS

Ορισµοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Διάλεξη 16: SQL DML IV, SQL DCL, SQL TCL. Διδάσκων: Παναγιώτης Ανδρέου

Σχεδίαση και Χρήση Βάσεων Δεδομένων. Χρήση του DBDesigner. Γιώργος Πυρουνάκης - forky@di.uoa.gr

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ.

Ανάπτυξη διαδικτυακών εφαρμογών με την Python Το εργαλείο Flask

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY.

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ - SQL

Το σχεσιακό μοντέλο βάσεων δεδομένων

Ηλεκτρονικοί Υπολογιστές II

Πανεπιστήµιο Ιωαννίνων Τµήµα Μαθηµατικών Μάθηµα: Βάσεις εδοµένων (741) Εργαστηριακό Τεστ Οµάδα: Α 18/11/2004

Βασικές Εντολές SQL. Θεωρία & Εντολές SQL. Γραμμή Εντολών MS-DOS (MySQL)

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY.

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

MySQL + Γλώσσα Προγραμματισμού. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #2

Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας. 3ο Μάθημα: Εισαγωγή στην SQL. Δρ. Κωνσταντίνος Χ.

Θέματα Προγραμματισμού Διαδικτύου ~ MySQL & PHP ~

Κεφάλαιο 7: Υποπρογράμματα. Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Εργαστήριο Βάσεων Δεδομένων

Βάσεις Δεδομένων. Ενότητα 6: Γλώσσα Structured Query Language -SQL. Πασχαλίδης Δημοσθένης Τμήμα Ιερατικών σπουδών

Εισαγωγή στην πληροφορική

Κεφάλαιο 7: Υπορουτίνες

1.1 Ανάλυση απαιτήσεων του Υποσυστήματος Μητρώου Εταιρειών Μ.Μ.Ε Ανάλυση απαιτήσεων του Υποσυστήματος Ελέγχου τήρησης μη

Περιγραφή του EcoTruck

Εργαστήριο Βάσεων Δεδομένων

Lecture 3: Introduction III

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ

Βάσεις Δεδομένων (Databases)

Υπολογιστικά Συστήματα

Ορισμοί Σχεσιακού Μοντέλου και (απλές)τροποποιήσεις Σχέσεων στην SQL. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ Relational Model. SQL Μαθ. #11

Μιχάλης Μασούρας Επιβλέπων Καθηγητής: Ιγνάτιος Δεληγιάννης

Transcript:

Αποθηκευμένες Διαδικασίες Stored Routines (Procedures & Functions) Αυγερινός Αραμπατζής avi@ee.duth.gr www.aviarampatzis.com Βάσεις Δεδομένων Stored Procedures 1

Stored Routines (1/2) Τμήματα κώδικα τα οποία είναι αποθηκευμένα μέσα στο ΣΔΒΔ και εκτελούνται στον server Παραδείγματα χρήσης των stored routines είναι: Διαδικασίες που εκτελούνται από πολλά προγράμματα τα οποία χρησιμοποιούν τη ΒΔ μπορούν να υλοποιηθούν μια φορά ως stored procedures ή functions μέσα στη ΒΔ Η εκτέλεση κώδικα μέσα στη βάση σε περιπτώσεις που θέλουμε να μειώσουμε την μεταφορά δεδομένων. Τα stored routines εκτελούνται μέσα στη βάση και επομένως έχουν πρόσβαση σε όσα δεδομένα θέλουμε χωρίς να φορτώνουμε το δίκτυο με τη μετακίνηση δεδομένων μεταξύ server και client Βάσεις Δεδομένων Stored Procedures 2

Stored Routines (2/2) Παραδείγματα χρήσης των stored routines είναι: Τα stored routines συμπληρώνουν την έννοια των Όψεων (views). Μπορούμε με όψεις και stored procedures να υλοποιήσουμε ένα νέο επίπεδο μεταξύ του σχήματος της βάσης και των client εφαρμογών Μπορούμε να υλοποιήσουμε σύνθετους περιορισμούς που δεν μπορούν να υποστηριχθούν με Triggers και Assertions Βάσεις Δεδομένων Stored Procedures 3

Γενική Δομή μιας Stored Routine CREATE PROCEDURE <name> (<params>) <local declarations> <procedure body>; CREATE FUNCTION <name> (<params>) RETURNS <return type> <local declarations> <function body>; Για να καλέσουμε μια ρουτίνα: CALL <name> (<params>) Βάσεις Δεδομένων Stored Procedures 4

Παράδειγμα (1/2) Έστω η σχέση: CREATE TABLE COMPANY ( company_id integer primary key, name varchar(30) ); Βάσεις Δεδομένων Stored Procedures 5

Παράδειγμα (2/2) CREATE PROCEDURE maintain_company ( IN action_in VARCHAR(6), IN id_in INTEGER, IN name_in VARCHAR(30) := NULL ) BEGIN IF action_in = 'DELETE' THEN DELETE FROM company WHERE company_id = id_in; ELSIF action_in = 'INSERT' THEN INSERT INTO company (company_id, name) VALUES (id_in, name_in); END IF; END; CALL maintain_company('insert', 34, 'Coca Cola'); CALL maintain_company('delete', 34); Βάσεις Δεδομένων Stored Procedures 6

Stored Function CREATE FUNCTION WEIGHTED_AVERAGE (n1 INT, n2 INT, n3 INT) RETURNS INT BEGIN DECLARE avg INT; SET avg = (n1+n2+2*n3)/4; RETURN avg; END; Βάσεις Δεδομένων Stored Procedures 7

Χρήσιμες Εντολές Για να δούμε μια λίστα με όλες τις αποθηκευμένες ρουτίνες και metadata (πχ ημερομηνία υλοποίησης, χρήστης, κ.α.): SHOW PROCEDURE STATUS Για να δούμε τον ορισμό μιας συγκεκριμένης ρουτίνας SHOW CREATE PROCEDURE <name> Για να μπορέσουμε να χρησιμοποιήσουμε το ; στον ορισμό ρουτίνας (δλδ χωρίς να προσπαθήσει η MySQL να εκτελέσει τις μεμονωμένες εντολές): DELIMITER <ορισμός ρουτίνας> DELIMITER ; Βάσεις Δεδομένων Stored Procedures 8

Java Stored Procedures Μπορούμε (στην Oracle) να φορτώσουμε κώδικα (κλάσεις) Java μέσα στο ΣΔΒΔ και να το καλέσουμε ως συνάρτηση. Δεν υποστηρίζεται ακόμα στην MySQL! //Oscar.java public class Oscar { // return a quotation from Oscar Wilde public static String quote() { return "I can resist everything except temptation."; } } Μεταγλωττίζουμε την Java με: javac Oscar.java Βάσεις Δεδομένων Stored Procedures 9

Φόρτωμα της Κλάσης (Oracle) -- Από Command Console loadjava -user teamxx/passwd@oradb.tios.alexandria Oscar.class -- Από κονσόλα SQL: CREATE OR REPLACE FUNCTION oscar_quote RETURN VARCHAR2 AS LANGUAGE JAVA NAME 'Oscar.quote() return java.lang.string'; -- Από SQL+ (sqlplus) VARIABLE thequote VARCHAR2(50); CALL oscar_quote() INTO :thequote; PRINT thequote; -- Από κονσόλα SQL: select oscar_quote() from dual; Βάσεις Δεδομένων Stored Procedures 10

Μειονεκτήματα των Stored Routines Μπορούν να δημιουργήσουν υψηλό φόρτο (σε μνήμη και επεξεργαστή) στον server Η MySQL επιτρέπει stored routines γραμμένες μόνο σε SQL, στην οποία μπορεί να είναι δύσκολο να γραφτεί μια πολύπλοκη ρουτίνα (σε αντίθεση με άλλες γλώσσες όπως η Java, C#, C++, κ.α. Δύσκολο το debugging Βάσεις Δεδομένων Stored Procedures 11

Πηγές/Αναφορές Βιβλίο Μαθήματος, Κεφάλαιο 9 Online manuals MySQL ή/και Oracle Βάσεις Δεδομένων Stored Procedures 12