Oracle PL/SQL Εισαγωγή, ενημέρωση, διαγραφή & επιλογή σε [Παράδειγμα]

Σε αυτό το σεμινάριο, θα μάθουμε πώς να το χρησιμοποιούμε SQL σε PL/SQL. Η SQL είναι το πραγματικό στοιχείο που φροντίζει για την ανάκτηση και την ενημέρωση των δεδομένων στη βάση δεδομένων, ενώ το PL/SQL είναι το στοιχείο που επεξεργάζεται αυτά τα δεδομένα. Επιπλέον, σε αυτό το άρθρο, θα συζητήσουμε επίσης πώς να συνδυάσουμε την SQL μέσα στο μπλοκ PL/SQL.

Συναλλαγές DML σε PL/SQL

Το DML σημαίνει Γλώσσα χειρισμού δεδομένων. Αυτές οι δηλώσεις χρησιμοποιούνται κυρίως για την εκτέλεση της δραστηριότητας χειραγώγησης. Ασχολείται με τις παρακάτω λειτουργίες.

  • Εισαγωγή δεδομένων
  • Ενημέρωση δεδομένων
  • Διαγραφή δεδομένων
  • Επιλογή Δεδομένων

Στο PL/SQL, μπορούμε να κάνουμε τον χειρισμό δεδομένων μόνο χρησιμοποιώντας τις εντολές SQL.

Εισαγωγή δεδομένων

Στο PL/SQL, μπορούμε να εισάγουμε τα δεδομένα σε οποιονδήποτε πίνακα χρησιμοποιώντας την εντολή SQL INSERT INTO. Αυτή η εντολή θα λάβει το όνομα του πίνακα, τη στήλη του πίνακα και τις τιμές στήλης ως είσοδο και θα εισαγάγει την τιμή στον βασικό πίνακα.

Η εντολή INSERT μπορεί επίσης να πάρει τις τιμές απευθείας από έναν άλλο πίνακα χρησιμοποιώντας τη δήλωση 'SELECT' αντί να δίνει τις τιμές για κάθε στήλη. Μέσω της δήλωσης 'SELECT', μπορούμε να εισαγάγουμε όσες σειρές περιέχει ο βασικός πίνακας.

Σύνταξη:

BEGIN
  INSERT INTO <table_name>(<column1 >,<column2>,...<column_n>)
     VALUES(<valuel><value2>,...:<value_n>);
END;
  • Η παραπάνω σύνταξη δείχνει την εντολή INSERT INTO. Το όνομα του πίνακα και οι τιμές είναι υποχρεωτικά πεδία, ενώ τα ονόματα στηλών δεν είναι υποχρεωτικά εάν οι δηλώσεις εισαγωγής έχουν τιμές για όλη τη στήλη του πίνακα.
  • Η λέξη-κλειδί "VALUES" είναι υποχρεωτική εάν οι τιμές δίνονται ξεχωριστά όπως φαίνεται παραπάνω.

Σύνταξη:

BEGIN
  INSERT INTO <table_name>(<columnl>,<column2>,...,<column_n>)
     SELECT <columnl>,<column2>,.. <column_n> FROM <table_name2>;
END;
  • Η παραπάνω σύνταξη δείχνει την εντολή INSERT INTO που παίρνει τις τιμές απευθείας από το χρησιμοποιώντας την εντολή SELECT.
  • Η λέξη-κλειδί "VALUES" δεν πρέπει να υπάρχει σε αυτήν την περίπτωση, καθώς οι τιμές δεν δίνονται χωριστά.

Ενημέρωση δεδομένων

Η ενημέρωση δεδομένων σημαίνει απλώς μια ενημέρωση της τιμής οποιασδήποτε στήλης στον πίνακα. Αυτό μπορεί να γίνει χρησιμοποιώντας τη δήλωση 'UPDATE'. Αυτή η δήλωση παίρνει το όνομα του πίνακα, το όνομα της στήλης και την τιμή ως είσοδο και ενημερώνει τα δεδομένα.

Σύνταξη:

BEGIN	
  UPDATE <table_name>
  SET <columnl>=<VALUE1>,<column2>=<value2>,<column_n>=<value_n> 
  WHERE <condition that uniquely identifies the record that needs to be update>; 
END;
  • Η παραπάνω σύνταξη δείχνει το UPDATE. Η λέξη-κλειδί «SET» καθοδηγεί τη μηχανή PL/SQL να ενημερώσει την τιμή της στήλης με την τιμή που δίνεται.
  • Η ρήτρα «WHERE» είναι προαιρετική. Εάν δεν δοθεί αυτή η ρήτρα, τότε η τιμή της αναφερόμενης στήλης σε ολόκληρο τον πίνακα θα ενημερωθεί.

Διαγραφή δεδομένων

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

Σύνταξη:

BEGIN
  DELETE
  FROM
  <table_name>
  WHERE <condition that uniquely identifies the record that needs to be update>; 
END;
  • Η παραπάνω σύνταξη δείχνει την εντολή DELETE. Η λέξη-κλειδί 'FROM' είναι προαιρετική και με ή χωρίς ρήτρα 'FROM' η εντολή συμπεριφέρεται με τον ίδιο τρόπο.
  • Η ρήτρα «WHERE» είναι προαιρετική. Εάν δεν δοθεί αυτή η ρήτρα, τότε ολόκληρος ο πίνακας θα διαγραφεί.

Επιλογή Δεδομένων

Προβολή/ανάκτηση δεδομένων σημαίνει ανάκτηση των απαιτούμενων δεδομένων από τον πίνακα της βάσης δεδομένων. Αυτό μπορεί να επιτευχθεί χρησιμοποιώντας την εντολή 'SELECT' με ρήτρα 'INTO'. Η εντολή 'SELECT' θα ανακτήσει τις τιμές από τη βάση δεδομένων και ο όρος 'INTO' θα εκχωρήσει αυτές τις τιμές στην τοπική μεταβλητή του Μπλοκ PL/SQL.

Παρακάτω είναι τα σημεία που πρέπει να ληφθούν υπόψη στη δήλωση 'ΕΠΙΛΟΓΗ'.

  • Η δήλωση 'SELECT' θα πρέπει να επιστρέφει μόνο μία εγγραφή ενώ χρησιμοποιείται ο όρος 'INTO' καθώς μία μεταβλητή μπορεί να περιέχει μόνο μία τιμή. Εάν η δήλωση "SELECT" επιστρέψει περισσότερες από μία τιμές, τότε θα αυξηθεί η εξαίρεση "TOO_MANY_ROWS".
  • Η δήλωση 'SELECT' θα εκχωρήσει την τιμή στη μεταβλητή στον όρο 'INTO', επομένως πρέπει να λάβει τουλάχιστον μία εγγραφή από τον πίνακα για να συμπληρώσει την τιμή. Εάν δεν έλαβε καμία εγγραφή, τότε τίθεται η εξαίρεση 'NO_DATA_FOUND'.
  • Ο αριθμός των στηλών και ο τύπος δεδομένων τους στην ρήτρα 'SELECT' πρέπει να ταιριάζει με τον αριθμό των μεταβλητών και τους τύπους δεδομένων τους στην πρόταση 'INTO'.
  • Οι τιμές ανακτώνται και συμπληρώνονται με την ίδια σειρά που αναφέρεται στη δήλωση.
  • Η ρήτρα "WHERE" είναι προαιρετική που επιτρέπει περισσότερους περιορισμούς στις εγγραφές που πρόκειται να ανακτηθούν.
  • Η δήλωση 'SELECT' μπορεί να χρησιμοποιηθεί στη συνθήκη 'WHERE' άλλων δηλώσεων DML για τον καθορισμό των τιμών των συνθηκών.
  • Η δήλωση 'ΕΠΙΛΟΓΗ' όταν χρησιμοποιείτε τις δηλώσεις 'INSERT', 'UPDATE', 'DELETE' δεν θα πρέπει να έχει τον όρο 'INTO' καθώς δεν θα συμπληρώνει καμία μεταβλητή σε αυτές τις περιπτώσεις.

Σύνταξη:

BEGIN
  SELECT <columnl>,..<column_n> INTO <vanable 1 >,. .<variable_n> 
   FROM <table_name>
   WHERE <condition to fetch the required records>;
END;
  • Η παραπάνω σύνταξη δείχνει την εντολή SELECT-INTO. Η λέξη-κλειδί "FROM" είναι υποχρεωτική που προσδιορίζει το όνομα του πίνακα από το οποίο πρέπει να ληφθούν τα δεδομένα.
  • Η ρήτρα «WHERE» είναι προαιρετική. Εάν δεν δοθεί αυτή η ρήτρα, τότε θα ληφθούν τα δεδομένα από ολόκληρο τον πίνακα.

Παράδειγμα 1: Σε αυτό το παράδειγμα, θα δούμε πώς να εκτελούμε λειτουργίες DML στο PL / SQL. Θα εισαγάγουμε τις παρακάτω τέσσερις εγγραφές στον πίνακα emp.

EMP_NAME EMP_NO ΜΙΣΘΟΣ ΔΙΕΥΘΥΝΤΗΣ
BBB 1000 25000 AAA
XXX 1001 10000 BBB
Εεε 1002 10000 BBB
Zzz 1003 7500 BBB

Στη συνέχεια, θα ενημερώσουμε τον μισθό του 'XXX' σε 15000 και θα διαγράψουμε το αρχείο εργαζομένων 'ZZZ'. Τέλος, θα προβάλουμε τα στοιχεία του υπαλλήλου 'XXX'.

Επιλογή δεδομένων σε PL/SQL

DECLARE
l_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,managed 
VALUES(‘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 EMP
SET salary=15000
WHERE 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 Inserted
Values Updated
Values Deleted
Employee Detail 
Employee Name:XXX 
Employee Number:1001 
Employee Salary:15000 
Employee 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: Εμφάνιση της τιμής των ληφθέντων εγγραφών.