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

Wat zijn PL/SQL-gegevenstypen?

Gegevenstypen in PL/SQL worden gebruikt om te definiëren hoe de gegevens worden opgeslagen, verwerkt en behandeld Oracle tijdens de gegevensopslag en -verwerking. Gegevenstypen zijn gekoppeld aan het specifieke opslagformaat en bereikbeperkingen. In Oracle, wordt aan elke waarde of constante een gegevenstype toegewezen.

Het belangrijkste verschil tussen PL/SQL en SQL gegevenstypen is dat het SQL-gegevenstype beperkt is tot de tabelkolom, terwijl de PL/SQL-gegevenstypen worden gebruikt in de PL/SQL-blokken. Meer hierover later in de tutorial.

Following is het diagram van verschillende Oracle PL/SQL-gegevenstypen:

PL/SQL-gegevenstypen
Verschillende gegevenstypen in PL/SQL

PL/SQL KARAKTER Gegevenstype

Dit gegevenstype slaat in principe alfanumerieke tekens op in stringformaat.

De letterlijke waarden moeten altijd tussen enkele aanhalingstekens worden geplaatst wanneer ze worden toegewezen aan het gegevenstype CHARACTER.

Dit karaktergegevenstype wordt verder als volgt geclassificeerd:

  • CHAR Gegevenstype (vaste tekenreeksgrootte)
  • VARCHAR2 Gegevenstype (variabele tekenreeksgrootte)
  • VARCHAR Gegevenstype
  • NCHAR (native vaste tekenreeksgrootte)
  • NVARCHAR2 (native variabele tekenreeksgrootte)
  • LANG en LANG RAUW
Data type Omschrijving Syntaxis
CHAR Dit gegevenstype slaat de tekenreekswaarde op en de grootte van de tekenreeks ligt vast op het moment dat de tekenreeks wordt gedeclareerd variabele.

  • Oracle zou de variabele leeg opvullen als de variabele niet de volledige grootte beslaat die ervoor is gedeclareerd, vandaar Oracle zal het geheugen voor de aangegeven grootte toewijzen, zelfs als de variabele dit niet volledig in beslag neemt.
  • De groottebeperking voor dit gegevenstype is 1-2000 bytes.
  • Het CHAR-gegevenstype is geschikter om te gebruiken wanneer de gegevensgrootte ooit wordt verwerkt.
grade CHAR;
manager CHAR (10):= 'guru99';

Syntaxis uitleg:

  • De eerste declaratieverklaring declareerde de variabele 'grade' van het CHAR-gegevenstype met de maximale grootte van 1 byte (standaardwaarde).
  • De tweede declaratieverklaring declareerde de variabele 'manager' van het CHAR-gegevenstype met de maximale grootte van 10 en kende de waarde 'guru99' toe, die 6 bytes bedraagt. Oracle zal in dit geval het geheugen van 10 bytes toewijzen in plaats van 6 bytes.
VARCHAR2 Dit gegevenstype slaat de string op, maar de lengte van de string staat niet vast.

  • De groottebeperking voor dit gegevenstype is 1-4000 bytes voor de tabelkolomgrootte en 1-32767 bytes voor variabelen.
  • De grootte wordt voor elke variabele gedefinieerd op het moment dat de variabele wordt gedeclareerd.
  • Maar Oracle zal alleen geheugen toewijzen nadat de variabele is gedefinieerd, dat wil zeggen: Oracle zal alleen rekening houden met de werkelijke lengte van de string die is opgeslagen in een variabele voor geheugentoewijzing, in plaats van met de grootte die is opgegeven voor een variabele in het declaratiegedeelte.
  • Het is altijd goed om VARCHAR2 te gebruiken in plaats van het CHAR-gegevenstype om het geheugengebruik te optimaliseren.
manager VARCHAR2(10) := ‘guru99';

Syntaxis uitleg:

  • De bovenstaande declaratieverklaring verklaarde de variabele 'manager' van het VARCHAR2-gegevenstype met de maximale grootte van 10 en kende de waarde 'guru99' toe, die 6 bytes bedraagt. Oracle zal in dit geval geheugen van slechts 6 bytes toewijzen.
VARCHAR Dit is synoniem met het VARCHAR2-gegevenstype.

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

Syntaxis uitleg:

  • De bovenstaande declaratieverklaring verklaarde de variabele 'manager' van het VARCHAR-gegevenstype met de maximale grootte van 10 en kende de waarde 'guru99' toe, die 6 bytes bedraagt. Oracle zal in dit geval geheugen van slechts 6 bytes toewijzen. (Vergelijkbaar met VARCHAR2)
NCHAR Dit gegevenstype is hetzelfde als het CHAR-gegevenstype, 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 bovenstaande aangifteverklaring declares de variabele 'native' van het NCHAR-gegevenstype met de maximale grootte van 10.
  • De lengte van deze variabele hangt af van (het aantal lengtes) per byte zoals gedefinieerd in de tekenset.
NVARCHAR2 Dit gegevenstype is hetzelfde als het gegevenstype VARCHAR2, maar de tekenset zal van de nationale tekenset zijn.

  • 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 bovenstaande aangifteverklaring declares de variabele 'Native_var' van het gegevenstype NVARCHAR2 met de maximale grootte van 10.
LANG en LANG Dit gegevenstype wordt gebruikt om grote tekst of onbewerkte gegevens op te slaan tot een maximale grootte van 2 GB.

  • Deze worden voornamelijk gebruikt in de datadictionary.
  • Het gegevenstype LONG wordt gebruikt om tekensetgegevens op te slaan, terwijl LONG RAW wordt gebruikt om gegevens in binair formaat op te slaan.
  • Het gegevenstype LONG RAW accepteert mediaobjecten, afbeeldingen enz., terwijl LONG alleen werkt op gegevens die kunnen worden opgeslagen met behulp van een tekenset.
Large_text LONG;
Large_raw LONG RAW;

Syntaxis uitleg:

  • De bovenstaande aangifteverklaring declares de variabele 'Large_text' van het LONG-gegevenstype en 'Large_raw' van het LONG RAW-gegevenstype.

Opmerking: Het gebruik van het gegevenstype LONG wordt niet aanbevolen door Oracle. In plaats daarvan verdient het LOB-gegevenstype de voorkeur.

PL/SQL NUMBER Gegevenstype

Dit gegevenstype slaat een vast of zwevend punt op numbers tot 38 cijfers nauwkeurig. Dit gegevenstype wordt gebruikt om te werken met velden die alleen getalgegevens bevatten. De variabele kan worden gedeclareerd met precisie en het decimale cijfer details of zonder deze informatie. Waarden hoeven bij het toewijzen voor dit gegevenstype niet tussen aanhalingstekens te staan.

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

Syntaxis uitleg:

  • In het bovenstaande is de eerste verklaring declares de variabele 'A' is van het getalgegevenstype met totale precisie 8 en decimale cijfers 2.
  • De tweede verklaring declares de variabele 'B' is van het getalgegevenstype met een totale precisie van 8 en zonder decimale cijfers.
  • De derde verklaring is de meest algemene, declares variabele 'C' is van het getalgegevenstype zonder beperking op het gebied van nauwkeurigheid of decimalen. Het kan maximaal 38 cijfers bevatten.

PL/SQL BOOLEAN-gegevenstype

Dit gegevenstype slaat de logische waarden op. Oracle Booleaans gegevenstype vertegenwoordigt TRUE of FALSE en wordt voornamelijk gebruikt in voorwaardelijke instructies. Waarden hoeven bij het toewijzen voor dit gegevenstype niet tussen aanhalingstekens te staan.

Var1 BOOLEAN;

Syntaxis uitleg:

  • In het bovenstaande wordt variabele 'Var1' gedeclareerd als BOOLEAN-gegevenstype. De uitvoer van de code is waar of onwaar, afhankelijk van de ingestelde voorwaarde.

PL/SQL DATE-gegevenstype

Dit gegevenstype slaat de waarden op in datumnotatie, als datum, maand en jaar. Wanneer een variabele wordt gedefinieerd met het gegevenstype DATE samen met de datum, kan deze tijdinformatie bevatten. Standaard wordt de tijdinformatie ingesteld op 12:00:00 als deze niet is opgegeven. Waarden moeten tussen aanhalingstekens worden geplaatst tijdens het toewijzen voor dit gegevenstype.

De standaard Oracle tijdformaat voor invoer en uitvoer is 'DD-MON-YY' en wordt opnieuw ingesteld op NLS_PARAMETERS (NLS_DATE_FORMAT) op sessieniveau.

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

Syntaxis uitleg:

  • In het bovenstaande wordt de variabele 'nieuwjaar' gedeclareerd als DATE-gegevenstype en krijgt de waarde 1 januari toegewezenst, datum 2015.
  • De tweede verklaring declares de variabele current_date als gegevenstype DATE en heeft de waarde toegewezen met de huidige systeemdatum.
  • Beide variabelen bevatten de tijdinformatie.

PL/SQL LOB-gegevenstype

Dit gegevenstype wordt voornamelijk gebruikt voor het opslaan en manipuleren van grote blokken ongestructureerde gegevens, zoals afbeeldingen, multimediabestanden, enz. Oracle geeft de voorkeur aan LOB in plaats van het gegevenstype LONG, omdat dit flexibeler is dan het gegevenstype LONG. Hieronder vindt u de belangrijkste voordelen van LOB ten opzichte van het LONG-gegevenstype.

  • Het aantal kolommen in een tabel met het gegevenstype LONG is beperkt tot 1, terwijl een tabel geen beperking kent voor het aantal kolommen met het gegevenstype LOB.
  • Het gegevensinterfacehulpprogramma accepteert het LOB-gegevenstype van de tabel tijdens gegevensreplicatie, maar laat de LONG-kolom van de tabel weg. Deze LONG-kolommen moeten handmatig worden gerepliceerd.
  • De grootte van de LONG-kolom is 2 GB, terwijl LOB maximaal 128 TB kan opslaan.
  • Oracle verbetert voortdurend het LOB-gegevenstype in elk van hun releases volgens de moderne vereisten, terwijl het LONG-gegevenstype constant is en niet veel updates krijgt.

Het is dus altijd goed om het gegevenstype LOB te gebruiken in plaats van het gegevenstype LONG. Volgwing zijn de verschillende LOB-gegevenstypen. Ze kunnen maximaal 128 terabytes opslaan.

  1. BLOB
  2. CLOB en NCLOB
  3. B-BESTAND
Data type Omschrijving Syntaxis
BLOB Dit gegevenstype slaat de LOB-gegevens op in het binaire bestandsformaat tot een maximale grootte van 128 TB. Er worden geen gegevens opgeslagen op basis van de tekenset details, zodat het de ongestructureerde gegevens zoals multimedia-objecten, afbeeldingen, enz. kan opslaan.
Binary_data BLOB;

Syntaxis uitleg:

  • In het bovenstaande wordt variabele 'Binary_data' gedeclareerd als een BLOB.
CLOB en NCLOB Het CLOB-gegevenstype slaat de LOB-gegevens op in de tekenset, terwijl NCLOB de gegevens opslaat in de eigen tekenset. Omdat deze gegevenstypen gebruik maken van op tekensets gebaseerde opslag, kunnen deze geen gegevens opslaan zoals multimedia, afbeeldingen, enz. die niet in een tekenreeks kunnen worden geplaatst. De maximale grootte van deze gegevenstypen is 128 TB.
Charac_data CLOB;

Syntaxis uitleg:

  • In het bovenstaande wordt variabele 'Charac_data' gedeclareerd als CLOB-gegevenstype.
B-BESTAND
  • BFILE zijn de gegevenstypen die de ongestructureerde gegevens in binair formaat buiten de database opslaan als een operating-systeembestand.
  • De omvang van BFILE is beperkt operating-systeem, en het zijn alleen-lezen bestanden en kunnen niet worden gewijzigd.

Samengevat

We hebben de verschillende eenvoudige gegevenstypen besproken die beschikbaar zijn in PL / SQL samen met hun syntaxis. We zullen leren over complex gegevenstypen in andere onderwerpen.