Oracle Τύποι δεδομένων PL/SQL: Boolean, Number, Date [Παράδειγμα]

Τι είναι οι τύποι δεδομένων PL/SQL;

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

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

Ακολουθεί το διάγραμμα των διαφορετικών Oracle Τύποι δεδομένων PL/SQL:

Τύποι δεδομένων PL/SQL
Διαφορετικοί τύποι δεδομένων σε PL/SQL

Τύπος δεδομένων ΧΑΡΑΚΤΗΡΑ PL/SQL

Αυτός ο τύπος δεδομένων αποθηκεύει βασικά αλφαριθμητικούς χαρακτήρες σε μορφή συμβολοσειράς.

Οι κυριολεκτικές τιμές θα πρέπει πάντα να περικλείονται σε μεμονωμένα εισαγωγικά ενώ τους αντιστοιχίζονται στον τύπο δεδομένων CHARACTER.

Αυτός ο τύπος δεδομένων χαρακτήρων ταξινομείται περαιτέρω ως εξής:

  • Τύπος δεδομένων CHAR (σταθερό μέγεθος συμβολοσειράς)
  • VARCHAR2 Τύπος δεδομένων (μεταβλητό μέγεθος συμβολοσειράς)
  • VARCHAR Τύπος δεδομένων
  • NCHAR (εγγενές σταθερό μέγεθος συμβολοσειράς)
  • NVARCHAR2 (εγγενές μέγεθος συμβολοσειράς μεταβλητής)
  • LONG και LONG RAW
Τύπος δεδομένων Descriptιόν Σύνταξη
ΑΠΑΝΘΡΑΚΩΝΩ Αυτός ο τύπος δεδομένων αποθηκεύει την τιμή συμβολοσειράς και το μέγεθος της συμβολοσειράς καθορίζεται τη στιγμή της δήλωσης του μεταβλητή.

  • Oracle θα ήταν κενή η μεταβλητή εάν η μεταβλητή δεν καταλάμβανε ολόκληρο το μέγεθος που έχει δηλωθεί για αυτήν, ως εκ τούτου Oracle θα εκχωρήσει τη μνήμη για το δηλωμένο μέγεθος ακόμα κι αν η μεταβλητή δεν την κατέλαβε πλήρως.
  • Ο περιορισμός μεγέθους για αυτόν τον τύπο δεδομένων είναι 1-2000 byte.
  • Ο τύπος δεδομένων CHAR είναι πιο κατάλληλος για χρήση όπου καθορίζεται το μέγεθος των δεδομένων που θα χειριστεί.
grade CHAR;
manager CHAR (10):= 'guru99';

Επεξήγηση σύνταξης:

  • Η πρώτη δήλωση δήλωσης δήλωσε τη μεταβλητή 'βαθμός' του τύπου δεδομένων CHAR με μέγιστο μέγεθος 1 byte (προεπιλεγμένη τιμή).
  • Η δεύτερη δήλωση δήλωσης δήλωσε τη μεταβλητή 'manager' του τύπου δεδομένων CHAR με μέγιστο μέγεθος 10 και εκχωρούσε την τιμή 'guru99' που είναι 6 byte. Oracle θα εκχωρήσει τη μνήμη 10 byte αντί 6 byte σε αυτήν την περίπτωση.
ΒΑΡΚΑΡΗ2 Αυτός ο τύπος δεδομένων αποθηκεύει τη συμβολοσειρά, αλλά το μήκος της συμβολοσειράς δεν είναι σταθερό.

  • Ο περιορισμός μεγέθους για αυτόν τον τύπο δεδομένων είναι 1-4000 byte για το μέγεθος στήλης πίνακα και 1-32767 byte για μεταβλητές.
  • Το μέγεθος καθορίζεται για κάθε μεταβλητή τη στιγμή της δήλωσης μεταβλητής.
  • Αλλά Oracle θα εκχωρήσει μνήμη μόνο αφού οριστεί η μεταβλητή, δηλ. Oracle θα λάβει υπόψη μόνο το πραγματικό μήκος της συμβολοσειράς που είναι αποθηκευμένο σε μια μεταβλητή για εκχώρηση μνήμης και όχι το μέγεθος που έχει δοθεί για μια μεταβλητή στο τμήμα δήλωσης.
  • Είναι πάντα καλό να χρησιμοποιείτε VARCHAR2 αντί για τύπο δεδομένων CHAR για να βελτιστοποιήσετε τη χρήση της μνήμης.
manager VARCHAR2(10) := ‘guru99';

Επεξήγηση σύνταξης:

  • Η παραπάνω δήλωση δήλωσης δήλωσε τη μεταβλητή 'manager' του τύπου δεδομένων VARCHAR2 με μέγιστο μέγεθος 10 και εκχωρούσε την τιμή 'guru99' που είναι 6 byte. Oracle θα εκχωρήσει μνήμη μόνο 6 byte σε αυτήν την περίπτωση.
VARCHAR Αυτό είναι συνώνυμο με τον τύπο δεδομένων VARCHAR2.

  • Είναι πάντα καλή πρακτική να χρησιμοποιείτε το VARCHAR2 αντί για το VARCHAR για να αποφύγετε αλλαγές συμπεριφοράς.
manager VARCHAR(10) := ‘guru99';

Επεξήγηση σύνταξης:

  • Η παραπάνω δήλωση δήλωσης δήλωσε τη μεταβλητή 'manager' του τύπου δεδομένων VARCHAR με μέγιστο μέγεθος 10 και εκχωρούσε την τιμή 'guru99' που είναι 6 byte. Oracle θα εκχωρήσει μνήμη μόνο 6 byte σε αυτήν την περίπτωση. (Παρόμοιο με το VARCHAR2)
ΝΧΑΡ Αυτός ο τύπος δεδομένων είναι ίδιος με τον τύπο δεδομένων CHAR, αλλά το σύνολο χαρακτήρων θα είναι του συνόλου εθνικών χαρακτήρων.

  • Αυτό το σύνολο χαρακτήρων μπορεί να οριστεί για την περίοδο λειτουργίας χρησιμοποιώντας NLS_PARAMETERS.
  • Το σύνολο χαρακτήρων μπορεί να είναι είτε UTF16 είτε UTF8.
  • Ο περιορισμός μεγέθους είναι 1-2000 byte.
native NCHAR(10);

Επεξήγηση σύνταξης:

  • Η παραπάνω δήλωση δήλωσης δηλώνει τη μεταβλητή «native» του τύπου δεδομένων NCHAR με μέγιστο μέγεθος 10.
  • Το μήκος αυτής της μεταβλητής εξαρτάται από τον (αριθμό μηκών) ανά byte όπως ορίζεται στο σύνολο χαρακτήρων.
NVARCHAR2 Αυτός ο τύπος δεδομένων είναι ίδιος με τον τύπο δεδομένων VARCHAR2, αλλά το σύνολο χαρακτήρων θα είναι του εθνικού συνόλου χαρακτήρων.

  • Αυτό το σύνολο χαρακτήρων μπορεί να οριστεί για την περίοδο λειτουργίας χρησιμοποιώντας NLS_PARAMETERS.
  • Το σύνολο χαρακτήρων μπορεί να είναι είτε UTF16 είτε UTF8.
  • Ο περιορισμός μεγέθους είναι 1-4000 byte.
Native var NVARCHAR2(10):='guru99';

Επεξήγηση σύνταξης:

  • Η παραπάνω δήλωση δήλωσης δηλώνει τη μεταβλητή 'Native_var' του τύπου δεδομένων NVARCHAR2 με μέγιστο μέγεθος 10.
ΜΑΚΡΥ και ΜΑΚΡΥ Αυτός ο τύπος δεδομένων χρησιμοποιείται για την αποθήκευση μεγάλου κειμένου ή μη επεξεργασμένων δεδομένων έως το μέγιστο μέγεθος των 2 GB.

  • Αυτά χρησιμοποιούνται κυρίως στο λεξικό δεδομένων.
  • Ο τύπος δεδομένων LONG χρησιμοποιείται για την αποθήκευση δεδομένων συνόλου χαρακτήρων, ενώ το LONG RAW χρησιμοποιείται για την αποθήκευση δεδομένων σε δυαδική μορφή.
  • Ο τύπος δεδομένων LONG RAW δέχεται αντικείμενα πολυμέσων, εικόνες κ.λπ., ενώ το LONG λειτουργεί μόνο σε δεδομένα που μπορούν να αποθηκευτούν χρησιμοποιώντας σύνολο χαρακτήρων.
Large_text LONG;
Large_raw LONG RAW;

Επεξήγηση σύνταξης:

  • Η παραπάνω δήλωση δήλωσης δηλώνει τη μεταβλητή 'Large_text' τύπου δεδομένων LONG και 'Large_raw' τύπου δεδομένων LONG RAW.

Σημείωση: Η χρήση τύπου δεδομένων LONG δεν συνιστάται από Oracle. Αντίθετα, θα πρέπει να προτιμάται ο τύπος δεδομένων LOB.

PL/SQL NUMBER Τύπος δεδομένων

Αυτός ο τύπος δεδομένων αποθηκεύει αριθμούς σταθερής ή κινητής υποδιαστολής ακριβείας έως και 38 ψηφίων. Αυτός ο τύπος δεδομένων χρησιμοποιείται για εργασία με πεδία που περιέχουν μόνο αριθμητικά δεδομένα. Η μεταβλητή μπορεί να δηλωθεί είτε με λεπτομέρειες ακριβείας και δεκαδικών ψηφίων είτε χωρίς αυτές τις πληροφορίες. Οι τιμές δεν χρειάζεται να περικλείονται μέσα σε εισαγωγικά κατά την εκχώρηση για αυτόν τον τύπο δεδομένων.

A NUMBER(8,2);
B NUMBER(8);
C NUMBER;

Επεξήγηση σύνταξης:

  • Στα παραπάνω, η πρώτη δήλωση δηλώνει ότι η μεταβλητή 'A' είναι τύπου αριθμητικών δεδομένων με συνολική ακρίβεια 8 και δεκαδικά ψηφία 2.
  • Η δεύτερη δήλωση δηλώνει ότι η μεταβλητή 'Β' είναι τύπου αριθμητικών δεδομένων με συνολική ακρίβεια 8 και χωρίς δεκαδικά ψηφία.
  • Η τρίτη δήλωση είναι η πιο γενική, δηλώνει ότι η μεταβλητή 'C' είναι τύπου αριθμών δεδομένων χωρίς περιορισμό στην ακρίβεια ή στα δεκαδικά ψηφία. Μπορεί να χρειαστούν έως και 38 ψηφία.

Τύπος δεδομένων PL/SQL BOOLEAN

Αυτός ο τύπος δεδομένων αποθηκεύει τις λογικές τιμές. Oracle Ο τύπος δεδομένων Boolean αντιπροσωπεύει είτε TRUE είτε FALSE και χρησιμοποιείται κυρίως σε προτάσεις υπό όρους. Οι τιμές δεν χρειάζεται να περικλείονται μέσα σε εισαγωγικά κατά την εκχώρηση για αυτόν τον τύπο δεδομένων.

Var1 BOOLEAN;

Επεξήγηση σύνταξης:

  • Στα παραπάνω, η μεταβλητή 'Var1' δηλώνεται ως τύπος δεδομένων BOOLEAN. Η έξοδος του κώδικα θα είναι είτε true είτε false με βάση το σύνολο συνθηκών.

PL/SQL DATE Τύπος δεδομένων

Αυτός ο τύπος δεδομένων αποθηκεύει τις τιμές σε μορφή ημερομηνίας, ως ημερομηνία, μήνα και έτος. Κάθε φορά που μια μεταβλητή ορίζεται με τύπο δεδομένων DATE μαζί με την ημερομηνία, μπορεί να περιέχει πληροφορίες ώρας και από προεπιλογή οι πληροφορίες ώρας ορίζονται σε 12:00:00, εάν δεν έχει καθοριστεί. Οι τιμές πρέπει να περικλείονται μέσα σε εισαγωγικά κατά την εκχώρηση για αυτόν τον τύπο δεδομένων.

Το πρότυπο Oracle Η μορφή ώρας για την είσοδο και την έξοδο είναι "ΗΗ-ΔΕΥ-ΕΕ" και ορίζεται ξανά σε NLS_PARAMETERS (NLS_DATE_FORMAT) σε επίπεδο περιόδου σύνδεσης.

newyear DATE:='01-JAN-2015';
current_date DATE:=SYSDATE;

Επεξήγηση σύνταξης:

  • Στα παραπάνω, η μεταβλητή 'νέο έτος' δηλώνεται ως τύπος δεδομένων DATE και εκχωρείται η τιμή της 1ης Ιανουαρίουst, ημερομηνία 2015.
  • Η δεύτερη δήλωση δηλώνει τη μεταβλητή current_date ως τύπο δεδομένων DATE και εκχωρεί την τιμή με την τρέχουσα ημερομηνία συστήματος.
  • Και οι δύο αυτές μεταβλητές περιέχουν τις πληροφορίες χρόνου.

Τύπος δεδομένων PL/SQL LOB

Αυτός ο τύπος δεδομένων χρησιμοποιείται κυρίως για την αποθήκευση και το χειρισμό μεγάλων μπλοκ μη δομημένων δεδομένων όπως εικόνες, αρχεία πολυμέσων κ.λπ. Oracle προτιμά το LOB αντί για τον τύπο δεδομένων LONG καθώς είναι πιο ευέλικτο από τον τύπο δεδομένων LONG. Τα παρακάτω είναι τα λίγα κύρια πλεονεκτήματα του LOB έναντι του τύπου δεδομένων LONG.

  • Ο αριθμός στηλών σε έναν πίνακα με τύπο δεδομένων LONG περιορίζεται στο 1, ενώ ένας πίνακας δεν έχει περιορισμό σε έναν αριθμό στηλών με τύπο δεδομένων LOB.
  • Το εργαλείο διεπαφής δεδομένων δέχεται τον τύπο δεδομένων LOB του πίνακα κατά την αναπαραγωγή δεδομένων, αλλά παραλείπει τη στήλη LONG του πίνακα. Αυτές οι LONG στήλες πρέπει να αναπαραχθούν χειροκίνητα.
  • Το μέγεθος της στήλης LONG είναι 2 GB, ενώ το LOB μπορεί να αποθηκεύσει έως και 128 TB.
  • Oracle βελτιώνει συνεχώς τον τύπο δεδομένων LOB σε κάθε κυκλοφορία τους σύμφωνα με τις σύγχρονες απαιτήσεις, ενώ ο τύπος δεδομένων LONG είναι σταθερός και δεν λαμβάνει πολλές ενημερώσεις.

Επομένως, είναι πάντα καλό να χρησιμοποιείτε τον τύπο δεδομένων LOB αντί για τον τύπο δεδομένων LONG. Ακολουθούν οι διαφορετικοί τύποι δεδομένων LOB. Μπορούν να αποθηκεύσουν έως και 128 terabyte.

  1. Blob
  2. CLOB και NCLOB
  3. ΠΡΟΦΙΛ
Τύπος δεδομένων Descriptιόν Σύνταξη
Blob Αυτός ο τύπος δεδομένων αποθηκεύει τα δεδομένα LOB σε δυαδική μορφή αρχείου έως το μέγιστο μέγεθος των 128 TB. Αυτό δεν αποθηκεύει δεδομένα με βάση τις λεπτομέρειες του συνόλου χαρακτήρων, έτσι ώστε να μπορεί να αποθηκεύσει τα μη δομημένα δεδομένα, όπως αντικείμενα πολυμέσων, εικόνες κ.λπ.
Binary_data BLOB;

Επεξήγηση σύνταξης:

  • Στα παραπάνω, η μεταβλητή 'Binary_data' δηλώνεται ως BLOB.
CLOB και NCLOB Ο τύπος δεδομένων CLOB αποθηκεύει τα δεδομένα LOB στο σύνολο χαρακτήρων, ενώ το NCLOB αποθηκεύει τα δεδομένα στο εγγενές σύνολο χαρακτήρων. Εφόσον αυτοί οι τύποι δεδομένων χρησιμοποιούν χώρο αποθήκευσης βάσει συνόλου χαρακτήρων, δεν μπορούν να αποθηκεύσουν δεδομένα όπως πολυμέσα, εικόνες κ.λπ. που δεν μπορούν να τοποθετηθούν σε μια συμβολοσειρά χαρακτήρων. Το μέγιστο μέγεθος αυτών των τύπων δεδομένων είναι 128 TB.
Charac_data CLOB;

Επεξήγηση σύνταξης:

  • Στα παραπάνω, η μεταβλητή 'Charac_data' δηλώνεται ως τύπος δεδομένων CLOB.
ΠΡΟΦΙΛ
  • BFILE είναι οι τύποι δεδομένων που αποθηκεύουν τα μη δομημένα δεδομένα δυαδικής μορφής εκτός της βάσης δεδομένων ως αρχείο λειτουργικού συστήματος.
  • Το μέγεθος του BFILE αφορά ένα περιορισμένο λειτουργικό σύστημα και είναι αρχεία μόνο για ανάγνωση και δεν μπορούν να τροποποιηθούν.

Σύνοψη

Καλύψαμε τους διαφορετικούς απλούς τύπους δεδομένων που είναι διαθέσιμοι σε PL / SQL μαζί με τη σύνταξή τους. Θα μάθουμε για πολύπλοκους τύπους δεδομένων σε περαιτέρω θέματα.