Σε αυτό το σεμινάριο, θα μάθουμε πώς να χρησιμοποιούμε το SQL στο PL / SQL. Το SQL είναι το πραγματικό στοιχείο που φροντίζει για τη λήψη και την ενημέρωση δεδομένων στη βάση δεδομένων, ενώ το PL / SQL είναι το στοιχείο που επεξεργάζεται αυτά τα δεδομένα. Επιπλέον, σε αυτό το άρθρο, θα συζητήσουμε επίσης πώς να συνδυάσετε το SQL στο μπλοκ PL / SQL.
Σε αυτό το σεμινάριο, θα μάθετε-
- Εισαγωγή δεδομένων
- Ενημέρωση δεδομένων
- Διαγραφή δεδομένων
- Επιλογή δεδομένων
Συναλλαγές DML σε PL / SQL
Το DML σημαίνει γλώσσα χειρισμού δεδομένων . Αυτές οι δηλώσεις χρησιμοποιούνται κυρίως για την εκτέλεση της δραστηριότητας χειραγώγησης. Ασχολείται με τις παρακάτω λειτουργίες.
- Εισαγωγή δεδομένων
- Ενημέρωση δεδομένων
- Διαγραφή δεδομένων
- Επιλογή δεδομένων
Στο PL / SQL, μπορούμε να κάνουμε τον χειρισμό δεδομένων μόνο χρησιμοποιώντας τις εντολές SQL.
Εισαγωγή δεδομένων
Στο PL / SQL, μπορούμε να εισάγουμε τα δεδομένα σε οποιονδήποτε πίνακα χρησιμοποιώντας την εντολή SQL INSERT INTO. Αυτή η εντολή θα λάβει το όνομα του πίνακα, τη στήλη του πίνακα και τις τιμές στηλών ως εισαγωγή και θα εισαγάγει την τιμή στο βασικό πίνακα.
Η εντολή INSERT μπορεί επίσης να πάρει τις τιμές απευθείας από έναν άλλο πίνακα χρησιμοποιώντας τη δήλωση «SELECT» αντί να δίνει τις τιμές για κάθε στήλη. Μέσω της δήλωσης «SELECT», μπορούμε να εισαγάγουμε όσες σειρές περιέχει ο βασικός πίνακας.
Σύνταξη:
BEGININSERT INTO( , ,… )VALUES( ,… : );END;
- Η παραπάνω σύνταξη δείχνει την εντολή INSERT INTO. Το όνομα και οι τιμές του πίνακα είναι υποχρεωτικά πεδία, ενώ τα ονόματα στηλών δεν είναι υποχρεωτικά εάν οι δηλώσεις εισαγωγής έχουν τιμές για όλη τη στήλη του πίνακα.
- Η λέξη-κλειδί «ΤΙΜΕΣ» είναι υποχρεωτική εάν οι τιμές δίνονται ξεχωριστά όπως φαίνεται παραπάνω.
Σύνταξη:
BEGININSERT INTO( , ,… , )SELECT , ,… FROM ;END;
- Η παραπάνω σύνταξη δείχνει την εντολή INSERT INTO που παίρνει τις τιμές απευθείας από το
χρησιμοποιώντας την εντολή SELECT. - Η λέξη-κλειδί «VALUES» δεν πρέπει να υπάρχει σε αυτήν την περίπτωση, καθώς οι τιμές δεν δίνονται ξεχωριστά.
Ενημέρωση δεδομένων
Η ενημέρωση δεδομένων σημαίνει απλώς μια ενημέρωση της τιμής οποιασδήποτε στήλης στον πίνακα. Αυτό μπορεί να γίνει χρησιμοποιώντας τη δήλωση «ΕΝΗΜΕΡΩΣΗ». Αυτή η δήλωση παίρνει το όνομα του πίνακα, το όνομα της στήλης και την τιμή ως εισαγωγή και ενημερώνει τα δεδομένα.
Σύνταξη:
BEGIN UPDATESET = , = , = WHERE ;END;
- Η παραπάνω σύνταξη δείχνει την ΕΝΗΜΕΡΩΣΗ. Η λέξη-κλειδί «SET» δίνει εντολή στον PL / SQL μηχανή να ενημερώσει την τιμή της στήλης με την τιμή που δίνεται.
- Η ρήτρα «ΠΟΥ» είναι προαιρετική. Εάν δεν δοθεί αυτή η ρήτρα, θα ενημερωθεί η τιμή της στήλης που αναφέρεται σε ολόκληρο τον πίνακα.
Διαγραφή δεδομένων
Διαγραφή δεδομένων σημαίνει διαγραφή μιας πλήρους εγγραφής από τον πίνακα βάσης δεδομένων. Η εντολή «ΔΙΑΓΡΑΦΗ» χρησιμοποιείται για το σκοπό αυτό.
Σύνταξη:
BEGINDELETEFROMWHERE ;END;
- Η παραπάνω σύνταξη δείχνει την εντολή DELETE. Η λέξη-κλειδί «FROM» είναι προαιρετική και με ή χωρίς ρήτρα «FROM» η εντολή συμπεριφέρεται με τον ίδιο τρόπο.
- Η ρήτρα «ΠΟΥ» είναι προαιρετική. Εάν δεν δοθεί αυτή η ρήτρα, τότε ολόκληρος ο πίνακας θα διαγραφεί.
Επιλογή δεδομένων
Προβολή δεδομένων / ανάκτηση σημαίνει ανάκτηση των απαιτούμενων δεδομένων από τον πίνακα βάσης δεδομένων. Αυτό μπορεί να επιτευχθεί χρησιμοποιώντας την εντολή «SELECT» με τον όρο «INTO». Η εντολή «SELECT» θα πάρει τις τιμές από τη βάση δεδομένων και η ρήτρα «INTO» θα εκχωρήσει αυτές τις τιμές στην τοπική μεταβλητή του μπλοκ PL / SQL.
Ακολουθούν τα σημεία που πρέπει να ληφθούν υπόψη στη δήλωση «SELECT».
- Η δήλωση «SELECT» θα πρέπει να επιστρέφει μόνο μία εγγραφή ενώ χρησιμοποιεί τη ρήτρα «INTO» καθώς μία μεταβλητή μπορεί να έχει μόνο μία τιμή. Εάν η δήλωση «SELECT» επιστρέφει περισσότερες από μία τιμές από την εξαίρεση «TOO_MANY_ROWS» θα αυξηθεί.
- Η δήλωση «SELECT» θα εκχωρήσει την τιμή στη μεταβλητή στον όρο «INTO», οπότε πρέπει να λάβει τουλάχιστον μία εγγραφή από τον πίνακα για να συμπληρώσει την τιμή. Εάν δεν πήρε κανένα ρεκόρ, τότε αυξάνεται η εξαίρεση "NO_DATA_FOUND".
- Ο αριθμός των στηλών και ο τύπος δεδομένων τους στον όρο «SELECT» πρέπει να ταιριάζουν με τον αριθμό των μεταβλητών και τους τύπους δεδομένων τους στη ρήτρα «INTO».
- Οι τιμές ανακτώνται και συμπληρώνονται με την ίδια σειρά όπως αναφέρεται στη δήλωση.
- Η ρήτρα «WHERE» είναι προαιρετική που επιτρέπει να υπάρχει περισσότερος περιορισμός στις εγγραφές που πρόκειται να ληφθούν.
- Η δήλωση «SELECT» μπορεί να χρησιμοποιηθεί στην κατάσταση «WHERE» άλλων δηλώσεων DML για τον καθορισμό των τιμών των συνθηκών.
- Η δήλωση «ΕΠΙΛΟΓΗ» όταν χρησιμοποιείτε τις δηλώσεις «ΕΙΣΑΓΩΓΗ», «ΕΝΗΜΕΡΩΣΗ», «ΔΙΑΓΡΑΦΗ» δεν θα πρέπει να έχει ρήτρα «INTO» καθώς δεν θα συμπληρώνει καμία μεταβλητή σε αυτές τις περιπτώσεις.
Σύνταξη:
BEGINSELECT,… INTO ,… FROM WHERE ;END;
- Η παραπάνω σύνταξη δείχνει την εντολή SELECT-INTO. Η λέξη-κλειδί «FROM» είναι υποχρεωτική που προσδιορίζει το όνομα του πίνακα από το οποίο πρέπει να ληφθούν τα δεδομένα.
- Η ρήτρα «ΠΟΥ» είναι προαιρετική. Εάν δεν δοθεί αυτή η ρήτρα, θα ληφθούν τα δεδομένα από ολόκληρο τον πίνακα.
Παράδειγμα 1 : Σε αυτό το παράδειγμα, θα δούμε πώς να εκτελέσουμε λειτουργίες DML σε PL / SQL. Θα εισαγάγουμε τις παρακάτω τέσσερις εγγραφές στον πίνακα emp.
EMP_NAME | EMP_NO | ΜΙΣΘΟΣ | ΔΙΕΥΘΥΝΤΗΣ |
BBB | 1000 | 25000 | ΑΑΑ |
XXX | 1001 | 10000 | BBB |
Εεε | 1002 | 10000 | BBB |
ΖΖΖ | 1003 | 7500 | BBB |
Στη συνέχεια πρόκειται να ενημερώσουμε τον μισθό του «XXX» σε 15000 και θα διαγράψουμε το ρεκόρ υπαλλήλων «ZZZ». Τέλος, θα προβάλλουμε τις λεπτομέρειες του υπαλλήλου «XXX».
DECLAREl_emp_name VARCHAR2(250);l_emp_no NUMBER;l_salary NUMBER;l_manager VARCHAR2(250);BEGIN INSERT INTO emp(emp_name,emp_no,salary,manager)VALUES(‘BBB’,1000,25000,’AAA’);INSERT INTO emp(emp_name,emp_no,salary,manager)VALUES('XXX',1001,10000,’BBB);INSERT INTO emp(emp_name,emp_no,salary,managedVALUES(‘YYY',1002,10000,'BBB');INSERT INTO emp(emp_name,emp_no,salary,manager)VALUES(‘ZZZ',1003,7500,'BBB'):COMMIT;Dbms_output.put_line(‘Values Inserted');UPDATE EMPSET salary=15000WHERE emp_name='XXX';COMMIT;Dbms_output.put_line(‘Values Updated');DELETE emp WHERE emp_name='ZZZ';COMMIT:Dbms_output.put_line('Values Deleted );SELECT emp_name,emp_no,salary,manager INTO l_emp_name,l_emp_no,l_salary,l_manager FROM emp WHERE emp_name='XXX';Dbms output.put line(‘Employee Detail’);Dbms_output.put_line(‘Employee Name:‘||l_emp_name);Dbms_output.put_line(‘Employee Number:‘||l_emp_no);Dbms_output.put_line(‘Employee Salary:‘||l_salary);Dbms output.put line(‘Emplovee Manager Name:‘||l_manager):END;/
Παραγωγή:
Values InsertedValues UpdatedValues DeletedEmployee DetailEmployee Name:XXXEmployee Number:1001Employee Salary:15000Employee Manager Name:BBB
Επεξήγηση κώδικα:
- Γραμμή κώδικα 2-5 : Δήλωση της μεταβλητής.
- Γραμμή κώδικα 7-14 : Εισαγωγή των εγγραφών στον πίνακα emp.
- Γραμμή κωδικού 15 : Πραγματοποίηση συναλλαγών εισαγωγής.
- Κωδικός 17-19 : Ενημέρωση του μισθού του υπαλλήλου «XXX» σε 15000
- Γραμμή κωδικού 20 : Πραγματοποίηση της συναλλαγής ενημέρωσης.
- Γραμμή κωδικού 22 : Διαγραφή της εγγραφής του "ZZZ"
- Γραμμή κωδικού 23 : Πραγματοποίηση συναλλαγής διαγραφής.
- Γραμμή κωδικού 25-27 : Επιλέγοντας την εγγραφή του «XXX» και συμπληρώνοντας τη μεταβλητή l_emp_name, l_emp_no, l_salary, l_manager.
- Γραμμή κωδικού 28-32 : Εμφάνιση της τιμής ανάκτησης.