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

Σχετικά έγγραφα
PL/SQL. Κώστας Στεφανίδης

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

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

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

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

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

Βάσεις Δεδομένων (Ε) Εισαγωγή στην υλοποίηση σχεσιακών βάσεων δεδομένων

MySQL stored procedures

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

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

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

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

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

ΗΥ-360 Αρχεία και Βάσεις Δεδομένων Διδάσκων: Δ. Πλεξουσάκης. Φροντιστήριο SQL Examples Ξένου Ρουμπίνη

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

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

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

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

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

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

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

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

ΗΥ-360 Αρχεία και Βάσεις Δεδομένων Διδάσκων: Δ. Πλεξουσάκης. Φροντιστήριο SQL Examples ΙΙ Ξένου Ρουμπίνη

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

ΖΗΤΗΜΑ 1 Ο : (Μονάδες 3) Να χαρακτηριστούν οι παρακάτω προτάσεις ως σωστές ή εσφαλμένες :

Εργαστήριο Οργάνωσης Η/Υ. Δαδαλιάρης Αντώνιος

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

Library, package και subprograms

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

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

Lecture 19: Internal DB Programming II

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

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

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

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

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

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

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

Χρήση της PostgreSQL σε Συστήματα Διοδίων στην Ελλάδα. Μπούζου Ιωάννα 26/06/2013

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

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

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

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

Lecture 20: External DB Programming II

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

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

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

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

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

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

ΙΚΤΥΩΤΟ ΜΟΝΤΕΛΟ (Network Model) Μαθ. # 15

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

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

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

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

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

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

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

Σύνδεση εφαρμογής σε Βάση Δεδομένων PHP

VHDL για Σχεδιασµό Ακολουθιακών Κυκλωµάτων

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

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

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

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

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

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

ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Χειµερινό Εξάµηνο 2016 Συµπληρωµατική ΔΙΑΛΕΞΗ 14: Περιγραφή Ακολουθιακών Κυκλωµάτων στη VHDL

ΠΡΟΣΟΜΟΙΩΣΗ ΘΕΩΡΙΑ 1. H αρχική οθόνη του Open Roberta lab

(Μέρος 3:Γλώσσα Ορισµού, Γλώσσα Τροποποίησης, Ενσωµατωµένη SQL) Βάσεις εδοµένων Ευαγγελία Πιτουρά 2

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

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

Lecture 18: Internal DB Programming I

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

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Ακολουθιακός Κώδικας

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

Εισαγωγή στη γλώσσα περιγραφής υλικού VHDL. Βασικές εντολές και η περιγραφή συνδυαστικών κυκλωµάτων. Ψηφιακή Σχεδίαση µε CAD ΙΙ - ιάλεξη 2 -

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

SQL Data Manipulation Language

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

Ευφυής Προγραμματισμός

ΗΜΥ 210: Σχεδιασμός Ψηφιακών Συστημάτων. VHDL για Ακολουθιακά Κυκλώματα 1

Ανοικτά Ακαδημαϊκά Μαθήματα

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

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

Ακολουθιακές εντολές. (Peter Ashenden, The Students Guide to VHDL)

DELETE, UPDATE, INSERT.

DELETE, UPDATE, INSERT

ΚΕΦΑΛΑΙΟ 2. Περιγραφή της Κίνησης. 2.1 Κίνηση στο Επίπεδο

databases linux - terminal (linux / windows terminal)

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

Διάλεξη 13: Γλώσσα Επεξεργασίας Δεδομένων/ Data Manipulation Language (SQL DML) I. Διδάσκων: Παναγιώτης Ανδρέου

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

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

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

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

Transcript:

ΕΠΛ 342 Βάσεις εδοµένων Εργαστήριο 6 ο PL/SQL Ιωάννα Συρίµη syrimi@ucy.ac.cy

PL/SQL Procedural Language/SQL Επέκταση της SQL µε χαρακτηριστικά γλωσσών προγραµµατισµού Επιτρέπει την χρήση προτάσεων SQL (DML & Query Statements) σε διαδικαστικά κοµµάτια κώδικα (procedural code units) ΕΠΛ342-Βάσεις εδοµένων 2

Μονάδες Κώδικα PL/SQL οµή µονάδας κώδικα PL/SQL DECLARE Optional Variables, Constants, Cursors, User Defined Exceptions Mandatory SQL Statements PL/SQL control Statements EXCEPTION Optional Actions to perform when errors occur END; Mandatory ΕΠΛ342-Βάσεις εδοµένων 3

Μονάδες Κώδικα PL/SQL Anonymous Blocks Stored Procedures & Functions Application Procedures & Functions Stored Packages Database Triggers Application Triggers ΕΠΛ342-Βάσεις εδοµένων 4

Μονάδες Κώδικα PL/SQL PROCEDURE name IS Declarations Statements EXCEPTION Exception Handlers END; FUNCTION name RETURN datatype IS Declarations Statements RETURN value; EXCEPTION Exception Handlers END; ΕΠΛ342-Βάσεις εδοµένων 5

Έλεγχος Ροής Εκτέλεσης IF-THEN-ELSE IF A> B THEN RETURN(1); ELSIF A>C THEN RETURN(2); ELSE RETURN (3); END IF; ΕΠΛ342-Βάσεις εδοµένων 6

Έλεγχος Ροής Εκτέλεσης Basic Loop LOOP x:= x+ 1; EXIT WHEN x > 10; END LOOP; WHILE Loop WHILE x <= 10 LOOP x:= x+ 1; END LOOP; FOR Loop FOR i IN 1.. 10 LOOP x := x i; END LOOP; ΕΠΛ342-Βάσεις εδοµένων 7

ιαδικασία CREATE OR REPLACE PROCEDURE Add_Dept (p_dept IN number, p_dname IN varchar2, p_loc IN varcahr2) IS INSERT INTO DEPT (deptno, dname, loc) VALUES (p_dept, p_dname, p_loc); END Add_Dept; CREATE OR REPLACE PROCEDURE Add_Dept (p_dept IN number, p_dname IN varchar2, p_loc IN varchar2 default NEW YORK ) IS CREATE OR REPLACE PROCEDURE Add_Dept (p_dept IN DEPT.DEPTNO%TYPE, p_dname IN DEPT.DNAME%TYPE, p_loc IN DEPT.LOC%TYPE default NEW YORK ) IS ΕΠΛ342-Βάσεις εδοµένων 8

ιαδικασία CREATE OR REPLACE PROCEDURE Add_Dept (p_dname IN varchar2, p_loc IN varchar2) IS INSERT INTO DEPT (deptno, dname, loc) VALUES (dept_seq.nextval, p_dname,p_loc); END Add_Dept; Sequence dept_seq: Αυτόµατος Αριθµητής CREATE SEQUENCE dept_seq start with 1 increment by 1 SELECT dept_seq.nextval FROM dual SELECT dept_seq.currval FROM dual ΕΠΛ342-Βάσεις εδοµένων 9

ιαδικασία CREATE OR REPLACE PROCEDURE Add_Dept ( p_dept OUT number, p_dname varchar2, p_loc varchar2) IS SELECT dept_seq.nextval into p_dept FROM dual; INSERT INTO DEPT (deptno, dname, loc) VALUES (dept_seq.nextval, p_dname,p_loc); END Add_Dept; IN OUT : Τιµή εισόδου για τη διαδικασία - Σταθερά : Τιµή εξόδου για τη διαδικασία Μεταβλητή χωρίς αρχική τιµή IN OUT : Τιµή εισόδου και εξόδου για τη διαδικασία Μεταβλητή µε αρχική τιµή ΕΠΛ342-Βάσεις εδοµένων 10

Λειτουργία CREATE OR REPLACE FUNCTION get_no_employees (p_dept dept.deptno%type) RETURN number is v_res number; SELECT count(*) into v_res FROM Emp WHERE deptno = p_dept; return v_res; END get_no_employees; ΕΠΛ342-Βάσεις εδοµένων 11

Ανάκτηση εδοµένων CREATE OR REPLACE PROCEDURE Show_Employees (p_dept dept.deptno%type, p_empno OUT emp.empno%type, p_ename OUT emp.ename%type) IS SELECT empno, ename INTO p_empno, p_ename FROM emp WHERE deptno = p_dept; END Show_Employees; Θα δουλέψει µόνο αν στο τµήµα εργάζεται 1 υπάλληλος ΕΠΛ342-Βάσεις εδοµένων 12

Ανάκτηση εδοµένων CREATE OR REPLACE PROCEDURE Show_Employees (p_dept dept.deptno%type, p_empno OUT emp.empno%type, p_ename OUT emp.ename%type) IS SELECT empno, ename INTO p_empno, p_ename FROM emp WHERE deptno = p_dept; EXCEPTION when NO_DATA_FOUND then p_empno:= -1; d_ename := null; when TOO_MANY_ROWS then SELECT MIN(empno) INTO p_empno FROM emp WHERE deptno = p_dept; SELECT ename INTO p_ename FROM emp WHERE empno = p_empno; when OTHERS then null; END Show_Employees; ΕΠΛ342-Βάσεις εδοµένων 13

Ανάκτηση εδοµένων - Cursor CREATE OR REPLACE PROCEDURE Show_Employees (p_dept dept.deptno%type) IS v_empno OUT emp.empno%type; v_ename OUT emp.ename%type; CURSOR c_emp is SELECT empno, ename FROM emp WHERE deptno = p_dept; DBMS_OUTPUT.ENABLE(2000); DBMS_OUTPUT.PUT_LINE( Department: p_deptno); DBMS_OUTPUT.PUT_LINE( ------------------------------------------- ); OPEN c_emp; LOOP FETCH c_emp INTO v_empno, v_ename; EXIT WHEN c_emp%notfound; DBMS_OUTPUT.PUT_LINE ( Employee No: v_empno Employee Name: v_ename); END LOOP; CLOSE c_emp; EXCEPTION when OTHERS then null; END Show_Employees; ΕΠΛ342-Βάσεις εδοµένων 14

Ανάκτηση εδοµένων - Cursor CREATE OR REPLACE PROCEDURE Show_Employees (p_dept dept.deptno%type) IS CURSOR c_emp is SELECT empno, ename FROM emp WHERE deptno = p_dept; v_rec c_emp%rowtype; DBMS_OUTPUT.ENABLE(2000); DBMS_OUTPUT.PUT_LINE( Department: p_deptno); DBMS_OUTPUT.PUT_LINE( ------------------------------------------- ); OPEN c_emp; LOOP FETCH c_emp INTO v_rec; EXIT WHEN c_emp%notfound; DBMS_OUTPUT.PUT_LINE ( Employee No: v_rec. empno Employee Name: v_rec. ename); END LOOP; CLOSE c_emp; EXCEPTION when OTHERS then null; END Show_Employees; ΕΠΛ342-Βάσεις εδοµένων 15

Ανάκτηση εδοµένων - Cursor DECLARE OPEN FETCH No EMPTY? Yes CLOSE ΕΠΛ342-Βάσεις εδοµένων 16