Oracle PL/SQL-datatyper: boolsk, tall, dato [eksempel]
Hva er PL/SQL-datatyper?
Datatyper i PL/SQL brukes til å definere hvordan dataene skal lagres, håndteres og behandles av Oracle under lagring og behandling av data. Datatyper er knyttet til det spesifikke lagringsformatet og rekkeviddebegrensningene. I Oracle, hver verdi eller konstant er tilordnet en datatype.
Hovedforskjellen mellom PL/SQL og SQL datatyper er, SQL-datatypen er begrenset til tabellkolonnen mens PL/SQL-datatypene brukes i PL/SQL-blokker. Mer om dette senere i opplæringen.
Følgende er diagrammet over forskjellige Oracle PL/SQL-datatyper:

PL/SQL KARAKTER Datatype
Denne datatypen lagrer i utgangspunktet alfanumeriske tegn i strengformat.
De bokstavelige verdiene skal alltid være omgitt av enkle anførselstegn mens de tilordnes til CHARACTER-datatypen.
Denne karakterdatatypen er videre klassifisert som følger:
- CHAR Datatype (fast strengstørrelse)
- VARCHAR2 Datatype (variabel strengstørrelse)
- VARCHAR Datatype
- NCHAR (innfødt fast strengstørrelse)
- NVARCHAR2 (native variabel strengstørrelse)
- LANG og LANG RÅ
Data-type | Tekniske beskrivelser | syntax |
---|---|---|
CHAR | Denne datatypen lagrer strengverdien, og størrelsen på strengen er fast på tidspunktet for deklarering av variabel.
|
grade CHAR; manager CHAR (10):= 'guru99'; Syntaks forklaring:
|
VARCHAR2 | Denne datatypen lagrer strengen, men lengden på strengen er ikke fast.
|
manager VARCHAR2(10) := ‘guru99'; Syntaks forklaring:
|
VARCHAR | Dette er synonymt med datatypen VARCHAR2.
|
manager VARCHAR(10) := ‘guru99'; Syntaks forklaring:
|
NCHAR | Denne datatypen er den samme som CHAR-datatypen, men tegnsettet til det nasjonale tegnsettet.
|
native NCHAR(10); Syntaks forklaring:
|
NVARCHAR2 |
Denne datatypen er den samme som VARCHAR2-datatypen, men tegnsettet vil være av det nasjonale tegnsettet.
|
Native var NVARCHAR2(10):='guru99'; Syntaks forklaring:
|
LANGT og LANGT | Denne datatypen brukes til å lagre stor tekst eller rådata opp til maksimal størrelse på 2 GB.
|
Large_text LONG; Large_raw LONG RAW; Syntaks forklaring:
OBS: Bruk av LONG datatype anbefales ikke av Oracle. I stedet bør LOB-datatypen foretrekkes. |
PL/SQL NUMMER Datatype
Denne datatypen lagrer tall med fast eller flyttall opp til 38 sifre med presisjon. Denne datatypen brukes til å arbeide med felt som kun vil inneholde talldata. Variabelen kan deklareres enten med presisjon og desimalsifferdetaljer eller uten denne informasjonen. Verdier trenger ikke omsluttes av anførselstegn ved tilordning for denne datatypen.
A NUMBER(8,2); B NUMBER(8); C NUMBER;
Syntaks forklaring:
- I det ovenstående erklærer den første erklæringen at variabelen 'A' er av talldatatype med total presisjon 8 og desimal 2.
- Den andre erklæringen erklærer at variabelen 'B' er av talldatatype med total presisjon 8 og ingen desimal.
- Den tredje erklæringen er den mest generiske, og erklærer at variabel 'C' er av talldatatype uten begrensning i presisjon eller desimaler. Det kan ta opptil 38 sifre.
PL/SQL BOOLEAN-datatype
Denne datatypen lagrer de logiske verdiene. Oracle Boolsk datatype representerer enten TRUE eller FALSE og brukes hovedsakelig i betingede utsagn. Verdier trenger ikke omsluttes av anførselstegn ved tilordning for denne datatypen.
Var1 BOOLEAN;
Syntaks forklaring:
- I det ovenstående er variabel 'Var1' erklært som BOOLEAN datatype. Utdata fra koden vil være enten sann eller usann basert på betingelsessettet.
PL/SQL DATO Datatype
Denne datatypen lagrer verdiene i datoformat, som dato, måned og år. Når en variabel er definert med DATE-datatype sammen med datoen, kan den inneholde tidsinformasjon, og som standard er tidsinformasjon satt til 12:00:00 hvis ikke spesifisert. Verdier må omsluttes av anførselstegn ved tilordning for denne datatypen.
Standard Oracle tidsformatet for input og output er 'DD-MON-YY' og det er igjen satt til NLS_PARAMETERS (NLS_DATE_FORMAT) på øktnivå.
newyear DATE:='01-JAN-2015'; current_date DATE:=SYSDATE;
Syntaks forklaring:
- I det ovenstående er variabel 'nyttår' erklært som datatype DATO og tildelt verdien 1. januarst, 2015 dato.
- Den andre erklæringen erklærer variabelen gjeldende_dato som datatype DATO og tilordnet verdien med gjeldende systemdato.
- Begge disse variablene inneholder tidsinformasjonen.
PL/SQL LOB-datatype
Denne datatypen brukes hovedsakelig til å lagre og manipulere store blokker med ustrukturerte data som bilder, multimediafiler, etc. Oracle foretrekker LOB i stedet for en LONG datatype da den er mer fleksibel enn LONG datatypen. Nedenfor er de få viktigste fordelene med LOB fremfor LANG datatype.
- Antall kolonner i en tabell med LONG datatype er begrenset til 1, mens en tabell ikke har noen begrensning på et antall kolonner med LOB datatype.
- Datagrensesnittverktøyet godtar LOB-datatypen for tabellen under datareplikering, men utelater LONG-kolonnen i tabellen. Disse LANGE kolonnene må replikeres manuelt.
- Størrelsen på LONG-kolonnen er 2GB, mens LOB kan lagre opptil 128 TB.
- Oracle forbedrer stadig LOB-datatypen i hver av deres utgivelser i henhold til moderne krav, mens LONG-datatypen er konstant og ikke får mange oppdateringer.
Så det er alltid greit å bruke LOB-datatypen i stedet for LONG-datatypen. Følgende er de forskjellige LOB-datatypene. De kan lagre opptil 128 terabyte.
- BLOB
- CLOB og NCLOB
- BFILE
Data-type | Tekniske beskrivelser | syntax |
---|---|---|
BLOB | Denne datatypen lagrer LOB-dataene i det binære filformatet opp til den maksimale størrelsen på 128 TB. Dette lagrer ikke data basert på tegnsettdetaljene, slik at det kan lagre ustrukturerte data som multimedieobjekter, bilder osv. |
Binary_data BLOB; Syntaks forklaring:
|
CLOB og NCLOB | CLOB-datatypen lagrer LOB-dataene i tegnsettet, mens NCLOB lagrer dataene i det opprinnelige tegnsettet. Siden disse datatypene bruker tegnsettbasert lagring, kan disse ikke lagre data som multimedia, bilder osv. som ikke kan settes inn i en tegnstreng. Maksimal størrelse på disse datatypene er 128 TB. |
Charac_data CLOB; Syntaks forklaring:
|
BFILE |
|
Sammendrag
Vi har dekket de forskjellige enkle datatypene som er tilgjengelige i PL / SQL sammen med deres syntaks. Vi vil lære om komplekse datatyper i videre emner.