Αποθηκευμένες Διαδικασίες και Εναύσματα Δρ. Παναγιώτης Συμεωνίδης.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
7.3.8 Μεταφραστές Ελληνογαλλική Σχολή Καλαμαρί - Τίκβα Χριστίνα.
Advertisements

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΥΠΟΡΟΥΤΙΝΕΣ
Δομές Διακλάδωσης Μην ελπίζεις ότι θα ξεφύγεις αν κάνεις κάποιο κακό. Γιατί κι αν ξεφύγεις απ’ τη προσοχή των άλλων, θα υποπέσεις στην αντίληψη της συνείδησής.
ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis Εισαγωγή στην SQL ΕΣΔ232 – Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας.
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Εισαγωγή στους Η/Υ Πίνακες.
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων, Σημασιολογικές Ενέργειες.
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
ΗΥ-150 Προγραμματισμός Εντολές Ελέγχου Ροής.
PL/SQL.
Ορισμοί Σχεσιακού Μοντέλου και (απλές)Τροποποιήσεις Σχέσεων στην SQL
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος ε
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος δ
Βάσεις Δεδομένων (ΚΒΔ)
JAVA και SQL Δαμιανός Χατζηαντωνίου
Γενική μορφή προγράμματος Pascal
Προγραμματισμός στο ΜatLab
Entity-Relationship Παραδείγματα Πληροφοριακά Συστήματα και Βάσεις Δεδομένων Φροντιστήριο 1 Δαμιανός Χατζηαντωνίου.
ORACLE PL/SQL Cursors Μέρος 1.
Η ΓΛΩΣΣΑ C ΜΑΘΗΜΑ 2.
Σχεδίαση αλγορίθμων (2ο μέρος)
1919 Αντικειμενο-σχεσιακά ΣΔΒΔ  Εμφωλιασμένες Σχέσεις  Το Πρότυπο SQL:1999 (SQL3)  Σύγκριση Συστημάτων.
ΣΥΝΑΡΤΗΣΕΙΣ.
ORACLE PL/SQL Records. Εγγραφές (Records) DECLARE TYPE t_Rec1Type IS RECORD ( Field1 NUMBER, Field2 VARCHAR2(5)); TYPE t_Rec2Type IS RECORD ( Field1 NUMBER,
Διαφάνειες παρουσίασης #3
ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis SQL: Ερωτήματα, προγραμματισμός και εναύσματα ΕΣΔ232 – Οργάνωση Δεδομένων.
ORACLE PL/SQL Εξαιρέσεις Exceptions. ΟΡΙΣΜΟΣ Μια εξαίρεση (exception) είναι ένας δείκτης που ενεργοποιείται κατά την εκτέλεση του προγράμματος.
Επεκτάσεις & Αποθηκευμένες Διαδικασίες1 Επεκτάσεις SQL.
ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών7-1 Πίνακας Συμβόλων Πίνακας συμβόλων: δομή δεδομένων που χρησιμοποιείται για την αποθήκευση διαφόρων πληροφοριών.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL.
1 Εναύσματα και Περιορισμοί Database Management Systems, Antonis Sidiropoulos.
Επικοινωνία Ανθρώπου Μηχανής HTML CGI JAVASCRIPT Κουμπούλης Χρήστος Α.Μ. 921 Χαλαβαζής Βασίλης Α.Μ. 988.
Βάσεις Δεδομένων Εργαστήριο ΙΙ Τμήμα Πληροφορικής ΑΠΘ
1 Βάσεις Δεδομένων ΙI Επιμέλεια: ΘΟΔΩΡΗΣ ΜΑΝΑΒΗΣ SQL (3 από 3) T Manavis.
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 12: Παραγωγή Ενδιάμεσου Κώδικα (Σημασιολογικές ρουτίνες μετάφρασης-Μέρος Β) Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής.
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας Προπτυχιακό.
9 Η Γλώσσα SQL  Εισαγωγή – Βασικές Έννοιες  Τύποι Δεδομένων  Ορισμός Δεδομένων (data definition)  Χειρισμός Δεδομένων (data manipulation)
Copyright © 2006 – Quality & Reliability SA PL/SQL TRIGGERS ΜΕΡΟΣ 1.
Κεφάλαιο 10 – Υποπρογράμματα
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Οι επεκτάσεις του έργου TOOBIS στις γλώσσες ορισμού και ερωτήσεων του ODMG Κ. Βασιλάκης.
ORACLE PL/SQL Cursors Μέρος 2. Cursors 2 Cursors με παραμέτρους Εισαγωγή παραμέτρου κατά την εκτέλεση Πολλά ανοίγματα με διαφορετικές παραμέτρους.
Επανάληψη και λυμένα θέματα του μαθήματος «Βάσεις Δεδομένων ΙΙ» για τη διδασκαλία του στo Τμήμα Πληροφορικής του ΤΕΙ Αθήνας. Διδάσκων: Χ. Σκουρλάς,
Βάσεις Δεδομένων Κεφ. 1 Πλεονεκτήματα Β.Δ. έναντι αρχείων Βασικές λειτουργίες Β.Δ. Εφαρμογές Β.Δ. στην καθημερινή ζωή.
Επανάληψη και λυμένα θέματα του μαθήματος «Βάσεις Δεδομένων ΙΙ» για τη διδασκαλία του στo Τμήμα Πληροφορικής του ΤΕΙ Αθήνας. Διδάσκων: Χ. Σκουρλάς,
Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας
Βάσεις Δεδομένων Ι 4η διάλεξη
Σύντομη περιγραφή Μια περιήγηση σε αφυπνιζόμενα προγράμματα (triggers), δηλαδή προγράμματα ενεργοποιούμενα από ενέργειες INSERT, UPDATE, DELETE στη βάση.
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
ΘΕΜΑ ΠΤΥΧΙΑΚΗΣ ΕΡΓΑΣΙΑΣ
Έλεγχος λογισμικού Ποιότητα Λογισμικού Black Box testing
Βάσεις Δεδομένων Ι Επανάληψη
Βάσεις Δεδομένων και web-based Εφαρμογές
9 Η Γλώσσα SQL Εισαγωγή – Βασικές Έννοιες Τύποι Δεδομένων
Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL
Η Γλώσσα Pascal Υποπρογράμματα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Βάσεις Δεδομένων ΙΙ Triggers
ΓΛΩΣΣΕΣ & ΕΡΓΑΛΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ
Αντικειμενο-σχεσιακά ΣΔΒΔ
Βάσεις Δεδομένων ΙΙ Ενότητα 6: Τεχνολογία PL/SQL - cursors Χ. Σκουρλάς
Σχεσιακεσ βασεισ δεδομενων
Βάσεις Δεδομένων ΙΙ Ενότητα 5: Μελέτη περιπτώσεως:
Ερωτήματα Επιλογής σε ACCESS
ΠΑΡΑΔΕΙΓΜΑΤΑ SQL.
ΠΑΡΑΔΕΙΓΜΑΤΑ SQL Ή ΠΑΡΑΔΕΙΓΜΑΤΑ SQL Ή
Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου
Μεταγράφημα παρουσίασης:

Αποθηκευμένες Διαδικασίες και Εναύσματα Δρ. Παναγιώτης Συμεωνίδης

Αποθηκευμένες Διαδικασίες Είναι τμήματα προγράμματος Βάσης Δεδομένων (διαδικασίες\procedures ή συναρτήσεις\functions) που αποθηκεύονται μόνιμα και εκτελούνται στον διακομιστή της Βάσης Δεδομένων.

Αποθηκευμένες Διαδικασίες Οι αποθηκευμένες διαδικασίες είναι προγράμματα τα οποία έχουν τα παρακάτω χαρακτηριστικά: Αποθηκεύονται και τρέχουν στον διακομιστή της Βάσης. Καλούνται με το όνομα τους από οποιαδήποτε εφαρμογή συνδεθεί με τη Βάση. Η εφαρμογή μπορεί να χωριστεί σε δύο μέρη: – Η εφαρμογή τρέχει στον πελάτη – Η αποθηκευμένη διαδικασία στον διακομιστή. Περιέχει προγραμματιστικές εντολές (if, loops) αλλά ταυτόχρονα μπορεί να χειριστεί SQL κώδικα.

Χρήσεις Οι αποθηκευμένες διαδικασίες μπορούν τα έχουν την παρακάτω χρήση: – Για έλεγχο πολύπλοκων περιορισμών. – Για απόκρυψη του κώδικα της διαδικασίας. – Για δημιουργία βιβλιοθήκης έτοιμων συναρτήσεων στον διακομιστή.

Πλεονεκτήματα Βελτιώνουν την ασφάλεια του DBMS. Υποστηρίζουν το «κρύψιμο» (encapsulation) του κώδικα τους, και με σωστό σχεδιασμό και συστηματική χρήση τους είναι δυνατόν να εξαφανιστεί η δομή της βάσης από τους χρήστες. Βελτιώνει την ταχύτητα απόκρισης του εξυπηρετητή της Βάσης. Αυτό οφείλεται στο ότι είναι προμεταγλωττισμένες (precompiled) και έτσι εκτελούνται γρηγορότερα. Επίσης, αντικαθιστώντας ένα σύνολο SQL εντολών με την κλήση μιας συνάρτησης που περιέχει όλες αυτές τις SQL εντολές, «ελαφρύνει» την κίνηση στο δίκτυο μεταξύ πελάτη και διακομιστή.

Δομή των Αποθηκευμένων Διαδικασιών Η δήλωση της περιέχει κώδικα SQL και αποτελείται από τα παρακάτω: Το όνομα της αποθηκευμένης διαδικασίας Τις παραμέτρους που θα πάρει Τον τύπο της παραμέτρου Το είδος της παραμέτρου (IN, OUT, INOUT) Τη γλώσσα στην οποία είναι γραμμένη, π.χ. SQL

Παράδειγμα Δήλωσης CREATE PROCEDURE ΟΝΟΜΑ (IN ΠΑΡΑΜΕΤΡΟΣ ΤΥΠΟΣ, OUT ΠΑΡΑΜΕΤΡΟΣ ΤΥΠΟΣ, INOUT ΠΑΡΑΜΕΤΡΟΣ ΤΥΠΟΣ ) LANGUAGE SQL BEGIN -- END (ΣΥΜΒΟΛΟ ΤΕΛΟΥΣ)

Σώμα Αποθηκευμένης Διαδικασίας Μέσα στο σώμα μίας διαδικασίας μπορούν να περιέχονται τα παρακάτω: Δηλώσεις – DECLARE – DECLARE CURSOR Υποθετικές φράσεις – CASE – IF Βρόγχοι – FOR – REPEAT – WHILE Εντολές Μεταφορές – CALL – GOTO – RETURN

Declare Με αυτήν την εντολή δηλώνουμε μεταβλητές. Σύνταξη: DECLARE [DEFAULT ]; Η δήλωση των μεταβλητών είναι τοπική. Οι μεταβλητές δεν είναι case sensitive γιατί μετατρέπονται σε κεφαλαία τα γράμματα τους Για να μεταβληθεί η τιμή μια μεταβλητής μετά τη δήλωση πρέπει να χρησιμοποιηθεί η εντολή SET.

Case Η εντολή CASE χρησιμοποιείται ως μία υποθετική φράση όπου όταν ικανοποιηθεί εκτελείται η αντίστοιχη εντολή. Υπάρχουν δύο τύποι CASE: _ O απλός, ο οποίος στηρίζεται σε μία απλή τιμή (literal) _O σύνθετος, οποίος στηρίζεται σε μία έκφραση (expression) _Μετά το WHEN που ικανοποιεί την CASE ακολουθεί η εκτελέσιμη φράση

Example Case CREATE PROCEDURE UPDATE_DEPT (IN p_workdept) 2. LANGUAGE SQL 3. BEGIN 4. DECLARE v_workdept CHAR(3); 5. SET v_workdept = p_workdept; 6. CASE v_workdept 7. WHEN 'A00' THEN 8. UPDATE department SET deptname = 'D1'; 9. WHEN 'B01' THEN 10. UPDATE department SET deptname = 'D2'; 11. ELSE 12. UPDATE department SET deptname = 'D3'; 13. END CASE 14. END

Example if 1. CREATE PROCEDURE UPDATE_SAL (IN empNum CHAR(6), IN rating SMALLINT) 2. LANGUAGE SQL 3. BEGIN 4. IF rating = 1 THEN 5. UPDATE employee SET salary = salary * 1.10, bonus = 1000 WHERE empno = empNum; 6. ELSEIF rating = 2 THEN 7. UPDATE employee SET salary = salary * 1.05, bonus = 500 WHERE empno = empNum; 8. ELSE 9. UPDATE employee SET salary = salary * 1.03, bonus = 0 WHERE empno = empNum; 10. END IF; 11. END

For Loop for as [ ] cursor for do end for;

For Loop Example create procedure myproc begin FOR each_record AS cursor1 CURSOR FOR SELECT cusnbr, cuscrd FROM customer DO UPDATE ordapplib.customer SET cuscrd = cuscrd * 1.1 WHERE CURRENT OF cursor1; END FOR; end

Triggers –Εναύσματα Μία διαδικασία την οποία δηλώνει ο Διαχειριστής της Βάσης Δεδομένων και η οποία ενεργοποιείται αυτόματα από το ΣΔΒΔ κάθε φορά που συμβαίνουν μεταβολές ορισμένου τύπου στα δεδομένα ονομάζεται έναυσμα.

Δομή ενός Εναύσματος Στην περιγραφή ενός εναύσματος ενυπάρχουν τρία διακριτά μέρη: Γεγονός: μία μεταβολή στη βάση δεδομένων η οποία ενεργοποιεί το έναυσμα. Συνθήκη: ένα αίτημα ή ένας έλεγχος που εκτελείται με την ενεργοποίηση του εναύσματος. Ενέργεια: μία διαδικασία η οποία εκτελείται όταν ισχύει η συνθήκη και ενεργοποιείται το έναυσμα.

Είδη Εναυσμάτων DML φράσεις (DELETE, INSERT, UPDATE) DDL φράσεις (CREATE, ALTER, DROP) Λειτουργίες Βάσης Δεδομένων (LOGON, LOGOFF)

Πότε εκτελείται Before Εκτελείται πριν συμβούν μεταβολές στη βάση. Παράδειγμα: Για ένα έναυσμα το οποίο αρχικοποιεί μία μεταβλητή η οποία αριθμεί το πλήθος των κατάλληλων προς εισαγωγή εγγραφών, η εκτέλεση του πρέπει να προηγείται. After Εκτελείται αφού συμβούν μεταβολές στη βάση. Παράδειγμα: Για ένα έναυσμα το οποίο αυξάνει τον αντίστοιχο μετρητή κάθε φορά που καταχωρείται μία εγγραφή, η εκτέλεση του είναι πιο λογικό να έπεται.

Πότε εκτελείται- Παράδειγμα CREATE TRIGGER όνομα-trigger { INSERT | DELETE | UPDATE } [ OF όνομα_στήλης [, όνομα_στήλης]* ] ON όνομα_πίνακα REFERENCING FOR EACH ROW / FOR EACH STATEMENT MODE DB2ROW / DB2SQL WHEN (συνθήκη) BEGIN Σώμα του trigger END

Κανόνες για Εναύσματα Δεν πρέπει να περιλαμβάνει δυναμικές παραμέτρους. Δεν πρέπει να εκτελεί εντολές create, alter, ή drop για τον πίνακα που είναι ορισμένο το έναυσμα. Δεν πρέπει να δημιουργεί ή να αφαιρεί ένα index για τον πίνακα που είναι ορισμένο το έναυσμα. Δεν πρέπει να δημιουργεί ή να αφαιρεί ένα έναυσμα για τον πίνακα που είναι ορισμένο το έναυσμα.

Παράδειγμα Εναύσματος CREATE TRIGGER SAILORS1 AFTER INSERT ON SAILORS REFERENCING NEW AS N FOR EACH ROW MODE DB2SQL UPDATE SAILORS SET AGE_UPDATED = CURRENT TIMESTAMP WHERE SID = N.SID

Παράδειγμα σε SQL Server Create Trigger loan_insert on loan for insert as Update copy Set on_loan = ‘Y’ From copy c inner join inserted I on c.isbn =i.isbn and c.copy_no = i.copy_no