MySQL stored procedures

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

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

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

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

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

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

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

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

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

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

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

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

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

Η γλώσσα προγραμματισμού Strange

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

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

Μέρος 2 Κατασκευή Συντακτικού Αναλυτή

ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού

ΕΚΦΩΝΗΣΕΙΣ ΘΕΜΑ Α. β. Οι πληροφορίες είναι δεδομένα τα οποία δεν έχουν υποστεί επεξεργασία.

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Εντολές Ελέγχου & Επανάληψης

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

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

Προγραμματισμός Ι (ΗΥ120)

Αντίρριο, 14/03/2017 Προδιαγραφές Εργαστηριακής Εργασίας για το μάθημα «Μεταγλωττιστές»

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

Η γλώσσα προγραμματισμού EEL

Pascal. 15 Νοεμβρίου 2011

Προγραμματισμός ΙI (Θ)

ιαφάνειες παρουσίασης #4

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

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

Υπολογισμός - Εντολές Επανάληψης

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP)

ιαφάνειες παρουσίασης #3

ιαφάνειες παρουσίασης #4

ιαφάνειες παρουσίασης #3

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

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

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

ΑΠΑΝΤΗΣΕΙΣ ΘΕΜΑ Α A1. 2-Λάθος 3-Λάθος 4-Σωστό 5-Λάθος A2. integer. real. Boolean. char. string A3.

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα.

Δομές ελέγχου. ομαδοποίηση εντολών εκτέλεση εντολών υπό συνθήκη επανάληψη εντολών

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Δομή Επιλογής. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 3 η : Επίλυση Προβληµάτων Χειµερινό Εξάµηνο 2011

Δομή Επανάληψης. Κεφάλαιο 7 Mike Trimos

α. Οι συμβολοσειρές είναι μια ακολουθία από χαρακτήρες. Μια συμβολοσειρά μπορεί να αποτελείται από περισσότερες από μία λέξεις.

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Pascal. 26 Οκτωβρίου 2011

Alternative to Balanced Trees, Comms of the ACM, 33(6), June 1990,

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ-ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΚΑΔΗΜΑΪΚΟ ΕΠΑΛ- ΚΑΝΙΓΓΟΣ 13- ΤΗΛ

Γ ΤΑΞΗ ΗΜΕΡΗΣΙΟΥ ΕΠΑ.Λ ΜΑΘΗΜΑ ΕΙ ΙΚΟΤΗΤΑΣ ΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΚΦΩΝΗΣΕΙΣ

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΝΕΟ ΚΑΙ ΠΑΛΑΙΟ ΣΥΣΤΗΜΑ

Ενότητα 1: «Εισαγωγή στην Αλγοριθμική και τον Προγραμματισμό. Απλές ασκήσεις με γλώσσα Pascal»

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

Λογισµικό (Software SW) Γλώσσες

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΠΑΝΕΛΛΑ ΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ (ΟΜΑ Α Β ) ΚΑΙ ΜΑΘΗΜΑΤΩΝ ΕΙ ΙΚΟΤΗΤΑΣ

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΝΕΟ ΚΑΙ ΠΑΛΑΙΟ ΣΥΣΤΗΜΑ

Δομημένος Προγραμματισμός

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΔΟΜΗΜΕΝΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γ ΕΠΑΛ

Προγραμματισμός Ι (HY120)

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

Εντολές Επανάληψης. int sum = 0, i=1; sum += i++ ; sum += i++ ; Η πράξη αυτή θα πρέπει να επαναληφθεί Ν φορές!

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

Εισαγωγή στον Προγραμματισμό

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

Εντολή Δεδομένα Περιεχόμενα μετά την εκτέλεση 1 read(x) 122 x= 2 read(a,b,c) a= b= c= 3 read(d,e)

Αποτελέσματα προόδου

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / Γ ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 27/01/2013

ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

Μεταγλωττιστές Βελτιστοποίηση

Εργαστήριο Αρχιτεκτονικής Υπολογιστών Ι. Εισαγωγή στη VHDL

Συναρτήσεις-Διαδικασίες

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

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

Εισαγωγή στον Προγραμματισμό

Η βασική συνάρτηση προγράμματος main()

Ανάπτυξη και Σχεδίαση Λογισμικού

Αντικειμενοστραφής Προγραμματισμός

FAIL PASS PASS οριακά

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ

Αρχεία Ένα αρχείο αποτελείται από μία σειρά ομοειδών δεδομένων που ονομάζονται λογικές εγγραφές (logical record)

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης

Πως θα αποθηκεύσει τη λίστα με τα ψώνια του και θα την ανακτήσει στο Σ/Μ; και πως θα προσθέσει στη λίστα του επιπλέον προϊόντα;

Παράλληλη Επεξεργασία Κεφάλαιο 2 Παραλληλισμός Δεδομένων

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι

Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών

ΚΕΦΑΛΑΙΟ 1ο 3ο. ΚΕΦΑΛΑΙΟ 5ο 6ο. ΚΕΦΑΛΑΙΟ 7ο. Δομημένος Προγραμματισμός - Γενικές Ασκήσεις Επανάληψης

Σκοπός. Προγραμματίζοντας τον Arduino ΙΙ Εντολή Εκχώρησης & Εντολές. Συλλογή & Επεξεργασία Δεδομένων. Πρόγραμμα. Εντολές Επεξεργασίας Δεδομένων

Ηβασικήσυνάρτηση προγράμματος main()

Ενότητα 1 Διάλεξη 3. Προγραμματισμός με Εφαρμογές στην Επιστήμη του Μηχανικού. Σιέττος Κωνσταντίνος

Η ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ Εντολές Επανάληψης REPEAT UNTIL, FOR, WHILE

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Transcript:

MySQL stored procedures Δημήτρης Σουραβλιάς Δομή παρουσίασης Εισαγωγή Δημιουργία μιας απλής stored procedure Μεταβλητές Παράμετροι Ροή ελέγχου Cursors 2

Εισαγωγή Μια stored procedure: είναι ένα τμήμα προγράμματος που αποθηκεύεται στον κατάλογο της Βάσης Δεδομένων μπορεί να κληθεί από ένα πρόγραμμα ή μια άλλη stored procedure μοιάζει με διαδικασία μιας τυπικής γλώσσας προγραμματισμού 3 Εισαγωγή (2) Πλεονεκτήματα: υπολογιστικό κέρδος, μια stored procedure εκτελείται πιο γρήγορα από ένα σύνολο MySQL εντολών μείωση επικοινωνιακού φορτίου μεταξύ εξυπηρέτη Βάσεων Δεδομένων και εφαρμογής μια stored procedure είναι επαναχρησιμοποιήσιμη μια stored procedure είναι ασφαλής 4

Εισαγωγή (3) Μειονεκτήματα αυξάνουν το φόρτο του εξυπηρέτη Βάσεων Δεδομένων δεν μπορούν να χρησιμοποιηθούν για πολύπλοκα προγράμματα το debugging είναι δύσκολο ηδημιουργίακαιηδιατήρησηstored procedures είναι μια εξειδικευμένη ικανότητα 5 Στα παραδείγματα που ακολουθούν θεωρούμε ότι έχουμε κατασκευάσει στη Βάση έναν πίνακα MOVIES (mid, title, year) mid, το id της ταινίας (πρωτεύον κλειδί) title, ο τίτλος της ταινίας year, το έτος δημιουργίας της ταινίας 6

Δημιουργία μιας απλής stored procedure DELIMITER // CREATE PROCEDURE GetAllMovies() BEGIN END // SELECT * FROM MOVIES; DELIMITER ; 7 Δημιουργία μιας απλής stored procedure (2) Ο default delimiter της MySQL είναι το ελληνικό ερωτηματικό (;) Πριν δημιουργήσουμε μια νέα stored procedure τον αλλάζουμε σε κάποιο άλλο σύμβολο Π.χ. //, $$, κ. λπ. με την εντολή DELIMITER Μόλις ολοκληρωθεί η δημιουργία μιας stored procedure, επαναφέρουμε τον default delimiter με χρήση της εντολής DELIMITER ; 8

Δημιουργία μιας απλής stored procedure (3) Κλήση μιας stored procedure: CALL stored_procedure_name(); Π.χ. CALL GetAllMovies(); Διαγραφή μιας stored procedure: DROP PROCEDURE stored_procedure_name; Π.χ. DROP PROCEDURE GetAllMovies; 9 Δομή παρουσίασης Εισαγωγή Δημιουργία μιας απλής stored procedure Μεταβλητές Παράμετροι Ροή ελέγχου Cursors 10

Μεταβλητές Τοπικές μεταβλητές που μετά την εκτέλεση της stored procedure αποδεσμεύουν τη μνήμη που καταλαμβάνουν Δήλωση DECLARE variable_name datatype(size) DEFAULT default_value; Π.χ. DECLARE total_movies INT DEFAULT 0; Ανάθεση τιμής SET variable_name = value; Π.χ. SET total_movies = 100; 11 Μεταβλητές (2) Μεταβλητές χρήστη, που είναι το ανάλογο των global μεταβλητών σε μια τυπική γλώσσα προγραμματισμού Δήλωση και αρχικοποίηση μεταβλητής χρήστη στη γραμμή εντολών: SET @variable_name = variable_value; Π.χ SET @a = 'ABC'; Για να δούμε στη γραμμή εντολών την τιμή του a: SELECT @a; 12

Παράμετροι Οι παράμετροι σε μια stored procedure μπορεί να είναι τύπου: ΙΝ: η τιμή της παραμέτρου περνάει στη stored procedure, αλλά η τιμή που πέρασε δε μεταβάλλεται OUT: η τιμή της παραμέτρου επιστέφεται στο πρόγραμμα που την κάλεσε INOUT: ητιμήτηςπαραμέτρουπερνάειστηstored procedure και η τροποποιημένη τιμή της επιστρέφεται στο πρόγραμμα που την κάλεσε 13 Παράμετροι (2) DELIMITER // CREATE PROCEDURE GetMoviesByYear (IN inputyear INT) BEGIN SELECT mid, title FROM MOVIES END // WHERE year = inputyear; DELIMITER ; 14

Δομή παρουσίασης Εισαγωγή Δημιουργία μιας απλής stored procedure Μεταβλητές Παράμετροι Ροή ελέγχου Cursors 15 Ροή ελέγχου ΗεντολήIF: IF <condition_1> THEN... ELSEIF <condition_2> THEN......... ELSEIF <condition_3> THEN... ELSE... END IF; ΗεντολήWHILE: WHILE <condition> DO <loop_body> END WHILE; 16

Ροή ελέγχου(2) DELIMITER $$ CREATE PROCEDURE WhileProc (IN myyear INT, IN offset INT) BEGIN DECLARE lastyear INT; SET lastyear = myyear + offset; WHILE myyear <= lastyear DO SELECT * FROM MOVIES WHERE year = myyear; SET myyear = myyear + 1; END WHILE; END $$ DELIMITER ; 17 Ροή ελέγχου(3) Άλλες εντολές για επανάληψη: LOOP, LEAVE και ITERATE REPEAT... UNTIL <condition> END REPEAT; 18

Cursors Χρησιμοποιούνται για να διατρέχουμε ν-άδες κάποιας σχέσης Δήλωση DECLARE cursor_name CURSOR FOR SELECT_Statement; Άνοιγμα OPEN cursor_name; Διάβασμα ν-άδας FETCH cursor_name INTO variable_list; 19 Cursors (2) ΗεντολήFETCH διαβάζει την τρέχουσα εγγραφή του πίνακα και αναθέτει τις τιμές των γνωρισμάτων στις μεταβλητές της variable_list. Στη συνέχεια μετακινεί τον cursor στην επόμενη γραμμή. Κλείσιμο CLOSE cursor_name; + ΠΑΡΑΔΕΙΓΜΑ από tutorial 20