Oracle PL/SQL-gegevenstypen: Boolean, getal, datum [voorbeeld]

โšก Slimme samenvatting

PL/SQL-datatypen definiรซren hoe Oracle Slaat elke waarde in een blok op, verwerkt deze en legt er beperkingen aan. Ze worden gegroepeerd in families voor tekens, getallen, Booleaanse waarden, datums en grote objecten (LOB's), elk met een eigen opslagformaat, groottelimieten en toewijzingsregels.

  • ๐Ÿ”ค Karakter: CHAR heeft een vaste lengte, VARCHAR2 heeft een variabele lengte en NCHAR en NVARCHAR2 gebruiken de nationale tekenset.
  • ๐Ÿ”ข Aantal: NUMBER kan vaste of zwevende-kommawaarden opslaan met een precisie tot 38 cijfers achter de komma.
  • โœ… Booleaans: Bevat de waarde WAAR of ONWAAR en wordt voornamelijk gebruikt in voorwaardelijke logica.
  • ๐Ÿ“… Datum: Slaat de datum en tijd op, waarbij standaard middernacht wordt gebruikt als er geen tijd is opgegeven.
  • ๐Ÿ—‚๏ธ LOB: BLOB, CLOB, NCLOB en BFILE slaan grote ongestructureerde gegevens op tot wel 128 TB.
  • ๐Ÿ‘ Beste oefening: Geef de voorkeur aan VARCHAR2 boven CHAR en LOB boven LONG om geheugen te besparen en toekomstbestendig te blijven.
  • ๐Ÿ”— Domein: SQL-typen worden gebruikt voor tabelkolommen; PL/SQL-typen worden gebruikt binnen PL/SQL-blokken.

Oracle PL/SQL-gegevenstypen

Wat zijn PL/SQL-datatypen?

Datatypen Definieer in PL/SQL hoe gegevens worden opgeslagen, verwerkt en behandeld. Oracle Tijdens opslag en verwerking. Gegevenstypen zijn gekoppeld aan een specifiek opslagformaat en bereikbeperkingen. In OracleAan elke waarde of constante wordt een gegevenstype toegekend.

Het belangrijkste verschil tussen PL/SQL en SQL Een verschil tussen SQL-datatypen is dat ze beperkt zijn tot tabelkolommen, terwijl PL/SQL-datatypen worden gebruikt in de PL/SQL-blokkenHierover later in de tutorial meer.

Hieronder staat een diagram van de verschillende Oracle PL/SQL-datatypen:

Verschillende gegevenstypen in PL/SQL
Verschillende gegevenstypen in PL/SQL

PL/SQL KARAKTER Gegevenstype

Dit gegevenstype slaat alfanumerieke tekens op in tekenreeksformaat. Letterlijke waarden moeten altijd tussen enkele aanhalingstekens worden geplaatst wanneer ze aan een CHARACTER-gegevenstype worden toegewezen.

Dit karaktergegevenstype wordt verder als volgt geclassificeerd:

  • CHAR-datatype (vaste tekenreeksgrootte)
  • VARCHAR2-datatype (variabele tekenreeksgrootte)
  • VARCHAR-datatype
  • NCHAR (native vaste tekenreeksgrootte)
  • NVARCHAR2 (native variabele tekenreeksgrootte)
  • LANG en LANG RAUW
Data type Beschrijving Syntaxis
CHAR Dit gegevenstype slaat een tekenreeks op, en de grootte van de tekenreeks is vastgelegd op het moment van declaratie. variabele.

  • Oracle Vult de variabele op met spaties als deze niet de volledige gedeclareerde grootte inneemt, dus Oracle Wijs het geheugen toe voor de opgegeven grootte, zelfs als de variabele dit niet volledig vult.
  • De groottebeperking is 1-2000 bytes.
  • CHAR is geschikter wanneer er met een vaste hoeveelheid gegevens wordt gewerkt.
grade CHAR;
manager CHAR (10):= 'guru99';

Syntaxis uitleg:

  • De eerste instructie declareert de variabele 'grade' van het gegevenstype CHAR met een maximale grootte van 1 byte (standaardwaarde).
  • De tweede instructie declareert de variabele 'manager' van het gegevenstype CHAR met een maximale grootte van 10 en kent er de waarde 'guru99' aan toe, wat 6 bytes is. Oracle In dit geval worden 10 bytes toegewezen in plaats van 6.
VARCHAR2 Dit gegevenstype slaat een tekenreeks op, maar de lengte is niet vast.

  • De maximale bestandsgrootte is 1-4000 bytes voor een tabelkolom en 1-32767 bytes voor een variabele.
  • De grootte wordt voor elke variabele bij de declaratie vastgelegd.
  • Oracle Het systeem wijst pas geheugen toe nadat de variabele is gedefinieerd, waardoor de werkelijke lengte van de opgeslagen tekenreeks wordt gebruikt in plaats van de gedeclareerde grootte.
  • Het is altijd beter om VARCHAR2 in plaats van CHAR te gebruiken om het geheugengebruik te optimaliseren.
manager VARCHAR2(10) := 'guru99';

Syntaxis uitleg:

  • De instructie declareert de variabele 'manager' van het gegevenstype VARCHAR2 met een maximale grootte van 10 en kent er 'guru99' aan toe, wat 6 bytes groot is. Oracle Hier wordt slechts 6 bytes geheugen toegewezen.
VARCHAR Dit is synoniem met het VARCHAR2-gegevenstype.

  • Het is altijd aan te raden om VARCHAR2 in plaats van VARCHAR te gebruiken om gedragsveranderingen te voorkomen.
manager VARCHAR(10) := 'guru99';

Syntaxis uitleg:

  • De instructie declareert de variabele 'manager' van het gegevenstype VARCHAR met een maximale grootte van 10 en kent er 'guru99', 6 bytes, aan toe. Oracle wijst slechts 6 bytes toe, vergelijkbaar met VARCHAR2.
NCHAR Dit gegevenstype is hetzelfde als CHAR, maar de tekenset is de nationale tekenset.

  • Deze tekenset kan voor de sessie worden gedefinieerd met behulp van NLS_PARAMETERS.
  • De tekenset kan UTF16 of UTF8 zijn.
  • De groottebeperking is 1-2000 bytes.
native NCHAR(10);

Syntaxis uitleg:

  • De instructie declareert de variabele 'native' van het gegevenstype NCHAR met een maximale grootte van 10.
  • De lengte is afhankelijk van het aantal bytes per teken dat in de tekenset is gedefinieerd.
NVARCHAR2 Dit gegevenstype is hetzelfde als VARCHAR2, maar de tekenset is de nationale tekenset.

  • Deze tekenset kan voor de sessie worden gedefinieerd met behulp van NLS_PARAMETERS.
  • De tekenset kan UTF16 of UTF8 zijn.
  • De groottebeperking is 1-4000 bytes.
Native_var NVARCHAR2(10):= 'guru99';

Syntaxis uitleg:

  • De instructie declareert de variabele 'Native_var' van het gegevenstype NVARCHAR2 met een maximale grootte van 10.
LANG en LANG RAUW Dit gegevenstype slaat grote tekstbestanden of onbewerkte gegevens op tot een maximale grootte van 2 GB.

  • Deze worden voornamelijk gebruikt in de datadictionary.
  • LONG slaat gegevens op in tekensetformaat, terwijl LONG RAW gegevens opslaat in binair formaat.
  • LONG RAW accepteert mediaobjecten en afbeeldingen, terwijl LONG alleen werkt met gegevens die kunnen worden opgeslagen met behulp van een tekenset.
Large_text LONG;
Large_raw LONG RAW;

Syntaxis uitleg:

  • De verklaring geeft aan dat 'Large_text' van het gegevenstype LONG is en 'Large_raw' van het gegevenstype LONG RAW.

Let op: Het gebruik van het gegevenstype LONG wordt niet aanbevolen. OracleHet gegevenstype LOB verdient de voorkeur.

PL/SQL NUMBER Gegevenstype

Dit gegevenstype slaat vaste- of drijvende-komma-getallen op met een precisie tot 38 cijfers. Het wordt gebruikt voor velden die alleen numerieke gegevens bevatten. De variabele kan worden gedeclareerd met of zonder precisie- en decimale-cijferspecificaties. Waarden hoeven niet tussen aanhalingstekens te worden geplaatst bij toewijzing.

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

Syntaxis uitleg:

  • De eerste declaratie declareert de variabele 'A' van het gegevenstype getal met een totale precisie van 8 en 2 decimalen.
  • De tweede declaratie geeft 'B' aan als een getal met een totale precisie van 8 en zonder decimalen.
  • De derde is de meest algemene, waarbij 'C' wordt gedeclareerd als numeriek gegevenstype zonder beperking op precisie of decimalen. Het kan maximaal 38 cijfers bevatten.

PL/SQL BOOLEAN-gegevenstype

Dit gegevenstype slaat logische waarden op. Oracle Het gegevenstype Boolean staat voor WAAR of ONWAAR en wordt voornamelijk gebruikt in voorwaardelijke statements. Waarden hoeven niet tussen aanhalingstekens te worden geplaatst bij toewijzing.

Var1 BOOLEAN;

Syntaxis uitleg:

  • De variabele 'Var1' is gedeclareerd als een BOOLEAN-datatype. De uitvoer zal waar of onwaar zijn, afhankelijk van de ingestelde voorwaarde.

PL/SQL DATE-gegevenstype

Dit gegevenstype slaat waarden op in datumformaat, als datum, maand en jaar. Wanneer een variabele is gedefinieerd met het gegevenstype DATE, kan deze tijdsinformatie bevatten; standaard is de tijd ingesteld op 12:00:00 als deze niet is gespecificeerd. Waarden moeten tussen aanhalingstekens worden geplaatst bij toewijzing.

De standaard Oracle Het tijdformaat voor invoer en uitvoer is 'DD-MON-JJ', dat is ingesteld bij NLS_PARAMETERS (NLS_DATE_FORMAT) op sessieniveau.

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

Syntaxis uitleg:

  • De variabele 'newyear' is gedeclareerd als gegevenstype DATE en heeft de waarde 1 januari 2015 toegewezen gekregen.
  • De tweede declaratie definieert 'current_date' als gegevenstype DATE en kent de huidige systeemdatum toe.
  • Beide variabelen bevatten tijdsinformatie.

PL/SQL LOB-gegevenstype

Dit gegevenstype wordt voornamelijk gebruikt voor het opslaan en bewerken van grote hoeveelheden ongestructureerde data, zoals afbeeldingen en multimediabestanden. Oracle De voorkeur gaat uit naar LOB boven het LONG-datatype omdat het flexibeler is. De belangrijkste voordelen van LOB ten opzichte van LONG zijn:

  • Een tabel is beperkt tot รฉรฉn LONG-kolom, terwijl er geen beperking is op het aantal LOB-kolommen.
  • Data-interfacetools accepteren LOB-kolommen tijdens replicatie, maar slaan LONG-kolommen over; deze moeten handmatig worden gerepliceerd.
  • Een LONG-kolom kan tot 2 GB aan gegevens opslaan, terwijl een LOB tot 128 TB kan opslaan.
  • Oracle Het LOB-datatype wordt met elke release verbeterd, terwijl LONG grotendeels ongewijzigd blijft.

Het is daarom altijd beter om het LOB-datatype te gebruiken in plaats van LONG. De verschillende LOB-datatypes hieronder kunnen tot 128 terabyte aan gegevens opslaan:

  1. BLOB
  2. CLOB en NCLOB
  3. B-BESTAND
Data type Beschrijving Syntaxis
BLOB Dit gegevenstype slaat LOB-gegevens op in binair bestandsformaat tot een maximum van 128 TB. Het slaat geen gegevens op basis van tekensetdetails op, waardoor het ongestructureerde gegevens zoals multimediaobjecten en afbeeldingen kan opslaan.
Binary_data BLOB;

Syntaxis uitleg:

  • De variabele 'Binary_data' is gedeclareerd als een BLOB.
CLOB en NCLOB CLOB slaat LOB-gegevens op in de tekenset, terwijl NCLOB gegevens opslaat in de oorspronkelijke tekenset. Omdat deze opslagmethoden gebruikmaken van een op de tekenset gebaseerde opslag, kunnen ze geen gegevens zoals multimedia of afbeeldingen opslaan. De maximale grootte is 128 TB.
Charac_data CLOB;

Syntaxis uitleg:

  • De variabele 'Charac_data' is gedeclareerd als CLOB-datatype.
B-BESTAND
  • BFILE slaat ongestructureerde binaire gegevens buiten de database op als een bestand van het besturingssysteem.
  • De grootte van een BFILE wordt beperkt door het besturingssysteem en de bestanden zijn alleen-lezen en kunnen niet worden gewijzigd.

Veelgestelde vragen

CHAR heeft een vaste lengte en vult aan met spaties tot de opgegeven grootte, waardoor er ruimte verloren gaat bij korte waarden. VARCHAR2 heeft een variabele lengte en slaat alleen de daadwerkelijke tekens op, waardoor het de voorkeur geniet voor de meeste tekenreekskolommen.

LOB staat veel kolommen per tabel toe, kan tot 128 TB aan gegevens opslaan en wordt met elke release verbeterd. LONG is beperkt tot รฉรฉn kolom, heeft een maximum van 2 GB en is voornamelijk behouden voor achterwaartse compatibiliteit.

Niet in oudere versies. BOOLEAN was een type dat alleen in PL/SQL voorkwam, dus tabelkolommen gebruikten in plaats daarvan een NUMBER- of CHAR-vlag. Het wordt direct binnen codeblokken gebruikt voor voorwaardelijke logica.

Ja. Door voorbeeldwaarden te profileren op lengte, bereik en formaat, kan AI VARCHAR2, NUMBER, DATE of een LOB voorstellen en kolommen markeren die te groot zijn. Bevestig de keuze aan de hand van toekomstige gegevens.

Ja. DATE slaat eeuw, jaar, maand, dag, uur, minuut en seconde op. Als er geen tijd wordt opgegeven, wordt standaard middernacht gebruikt. Voor fractionele seconden of tijdzones kunt u TIMESTAMP gebruiken.

Vat dit bericht samen met: