Oracle PL/SQL-datatyper: Boolean, Antal, Datum [Exempel]

โšก Smart sammanfattning

PL/SQL-datatyper definierar hur Oracle lagrar, hanterar och begrรคnsar varje vรคrde i ett block. De grupperas i tecken-, tal-, booleska-, datum- och stora objektfamiljer (LOB), var och en med sitt eget lagringsformat, storleksgrรคnser och tilldelningsregler.

  • ๐Ÿ”ค Karaktรคr: CHAR har fast lรคngd, VARCHAR2 har variabel lรคngd och NCHAR och NVARCHAR2 anvรคnder den nationella teckenuppsรคttningen.
  • ๐Ÿ”ข Nummer: NUMMER lagrar fasta eller flyttalvรคrden med upp till 38 siffrors precision.
  • โœ… Boolean: Innehรฅller SANT eller FALSKT och anvรคnds huvudsakligen i villkorlig logik.
  • ๐Ÿ“… Datum: Lagrar datum och tid, standardinstรคllningen รคr midnatt nรคr ingen tid anges.
  • ๐Ÿ—‚๏ธ LOBB: BLOB, CLOB, NCLOB och BFILE lagrar stora ostrukturerade data pรฅ upp till 128 TB.
  • ???? Bรคsta praxis: Fรถredra VARCHAR2 framfรถr CHAR och LOB framfรถr LONG fรถr att spara minne och vara framtidssรคker.
  • ๐Ÿ”— Omfattning: SQL-typer gรคller fรถr tabellkolumner; PL/SQL-typer anvรคnds inuti PL/SQL-block.

Oracle PL/SQL-datatyper

Vad รคr PL/SQL-datatyper?

Datatyper i PL/SQL definiera hur data ska lagras, hanteras och behandlas av Oracle under lagring och bearbetning. Datatyper รคr associerade med ett specifikt lagringsformat och intervallbegrรคnsningar. Oracle, varje vรคrde eller konstant tilldelas en datatyp.

Den stรถrsta skillnaden mellan PL/SQL och SQL datatyper รคr att SQL-datatyper รคr begrรคnsade till tabellkolumner, medan PL/SQL-datatyper anvรคnds i PL/SQL-block. Mer om detta senare i handledningen.

Fรถljande รคr ett diagram รถver de olika Oracle PL/SQL-datatyper:

Olika datatyper i PL/SQL
Olika datatyper i PL/SQL

PL/SQL KARAKTER Datatyp

Den hรคr datatypen lagrar alfanumeriska tecken i strรคngformat. Literala vรคrden ska alltid omges av enkla citattecken nรคr de tilldelas en CHARACTER-datatyp.

Denna karaktรคrsdatatyp klassificeras ytterligare enligt fรถljande:

  • CHAR-datatyp (fast strรคngstorlek)
  • VARCHAR2-datatyp (variabel strรคngstorlek)
  • VARCHAR-datatyp
  • NCHAR (inbyggd fast strรคngstorlek)
  • NVARCHAR2 (inbyggd variabel strรคngstorlek)
  • Lร…NGT och Lร…NGT Rร…T
Data typ BESKRIVNING syntax
Rร–DING Den hรคr datatypen lagrar ett strรคngvรคrde, och strรคngens storlek รคr fast vid deklarationstillfรคllet. variabel.

  • Oracle blank-fyller variabeln om den inte upptar hela den deklarerade storleken, sรฅ Oracle allokerar minne fรถr den deklarerade storleken รคven om variabeln inte fyller den.
  • Storleksbegrรคnsningen รคr 1-2000 byte.
  • CHAR รคr mer lรคmpligt dรคr en fast datastorlek hanteras.
grade CHAR;
manager CHAR (10):= 'guru99';

Syntaxfรถrklaring:

  • Den fรถrsta satsen deklarerar variabeln 'grade' av CHAR-datatypen med en maximal storlek pรฅ 1 byte (standardvรคrde).
  • Den andra satsen deklarerar variabeln 'manager' av CHAR-datatypen med en maximal storlek pรฅ 10 och tilldelar vรคrdet 'guru99', vilket รคr 6 byte. Oracle allokerar 10 byte istรคllet fรถr 6 i det hรคr fallet.
VARCHAR2 Den hรคr datatypen lagrar en strรคng, men lรคngden รคr inte fast.

  • Storleksbegrรคnsningen รคr 1โ€“4000 byte fรถr en tabellkolumn och 1โ€“32767 byte fรถr en variabel.
  • Storleken definieras fรถr varje variabel vid deklarationen.
  • Oracle allokerar minne endast efter att variabeln har definierats, sรฅ den anvรคnder den faktiska lรคngden pรฅ den lagrade strรคngen snarare รคn den deklarerade storleken.
  • Det รคr alltid bra att anvรคnda VARCHAR2 istรคllet fรถr CHAR fรถr att optimera minnesanvรคndningen.
manager VARCHAR2(10) := 'guru99';

Syntaxfรถrklaring:

  • Satsen deklarerar variabeln 'manager' av VARCHAR2-datatypen med en maximal storlek pรฅ 10 och tilldelar 'guru99', vilket รคr 6 byte. Oracle allokerar endast minne pรฅ 6 byte hรคr.
VARCHAR Detta รคr synonymt med datatypen VARCHAR2.

  • Det รคr alltid bra att anvรคnda VARCHAR2 istรคllet fรถr VARCHAR fรถr att undvika beteendefรถrรคndringar.
manager VARCHAR(10) := 'guru99';

Syntaxfรถrklaring:

  • Satsen deklarerar variabeln 'manager' av VARCHAR-datatypen med en maximal storlek pรฅ 10 och tilldelar 'guru99', 6 byte. Oracle allokerar endast 6 byte, liknande VARCHAR2.
NCHAR Denna datatyp รคr densamma som CHAR, men teckenuppsรคttningen รคr den nationella teckenuppsรคttningen.

  • Denna teckenuppsรคttning kan definieras fรถr sessionen med NLS_PARAMETERS.
  • Teckenuppsรคttningen kan vara antingen UTF16 eller UTF8.
  • Storleksbegrรคnsningen รคr 1-2000 byte.
native NCHAR(10);

Syntaxfรถrklaring:

  • Satsen deklarerar variabeln 'native' av NCHAR-datatypen med en maximal storlek pรฅ 10.
  • Lรคngden beror pรฅ antalet byte per tecken som definierats i teckenuppsรคttningen.
NVARCHAR2 Denna datatyp รคr densamma som VARCHAR2, men teckenuppsรคttningen รคr den nationella teckenuppsรคttningen.

  • Denna teckenuppsรคttning kan definieras fรถr sessionen med NLS_PARAMETERS.
  • Teckenuppsรคttningen kan vara antingen UTF16 eller UTF8.
  • Storleksbegrรคnsningen รคr 1-4000 byte.
Native_var NVARCHAR2(10):= 'guru99';

Syntaxfรถrklaring:

  • Satsen deklarerar variabeln 'Native_var' av datatypen NVARCHAR2 med en maximal storlek pรฅ 10.
Lร…NGT och Lร…NGT Rร…T Den hรคr datatypen lagrar stor text eller rรฅdata upp till en maximal storlek pรฅ 2 GB.

  • Dessa anvรคnds frรคmst i dataordboken.
  • LONG lagrar teckenuppsรคttningsdata, medan LONG RAW lagrar data i binรคrt format.
  • LONG RAW accepterar medieobjekt och bilder, medan LONG bara fungerar pรฅ data som kan lagras med hjรคlp av en teckenuppsรคttning.
Large_text LONG;
Large_raw LONG RAW;

Syntaxfรถrklaring:

  • Satsen deklarerar 'Large_text' av datatypen LONG och 'Large_raw' av datatypen LONG RAW.

Obs: Anvรคndning av datatypen LONG rekommenderas inte av OracleLOB-datatypen bรถr fรถredras istรคllet.

PL/SQL NUMMER Datatyp

Denna datatyp lagrar fasta tal eller flyttal med upp till 38 siffrors precision. Den anvรคnds fรถr att arbeta med fรคlt som endast innehรฅller numeriska data. Variabeln kan deklareras antingen med precision och decimalsiffriga detaljer eller utan dem. Vรคrden behรถver inte omges av citattecken nรคr de tilldelas.

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

Syntaxfรถrklaring:

  • Den fรถrsta deklarationen deklarerar variabeln 'A' av datatypen numerisk med en total precision pรฅ 8 och 2 decimalsiffror.
  • Den andra deklarerar 'B' av numerisk datatyp med total precision 8 och inga decimalsiffror.
  • Den tredje รคr den mest generiska och deklarerar 'C' fรถr taldatatypen utan begrรคnsning av precision eller decimaler. Den kan ta upp till 38 siffror.

PL/SQL BOOLEAN Datatyp

Den hรคr datatypen lagrar logiska vรคrden. Oracle Booleska datatyper representerar antingen SANT eller FALSKT och anvรคnds huvudsakligen i villkorliga satser. Vรคrden behรถver inte omges av citattecken nรคr de tilldelas.

Var1 BOOLEAN;

Syntaxfรถrklaring:

  • Variabeln 'Var1' deklareras som en BOOLESK datatyp. Utdata kommer att vara antingen sant eller falskt baserat pรฅ det uppsatta villkoret.

PL/SQL DATUM Datatyp

Denna datatyp lagrar vรคrden i datumformat, som datum, mรฅnad och รฅr. Nรคr en variabel definieras med datatypen DATE kan den innehรฅlla tidsinformation; som standard รคr tiden instรคlld pรฅ 12:00:00 om ingen annan anges. Vรคrden mรฅste omges av citattecken nรคr de tilldelas.

Standarden Oracle Tidsformatet fรถr indata och utdata รคr 'DD-Mร…N-ร…ร…', vilket รคr instรคllt pรฅ NLS_PARAMETERS (NLS_DATE_FORMAT) pรฅ sessionsnivรฅ.

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

Syntaxfรถrklaring:

  • Variabeln 'newyear' deklareras som datatypen DATE och tilldelas vรคrdet 1 januari 2015.
  • Den andra deklarationen deklarerar 'current_date' som datatyp DATE och tilldelar det aktuella systemdatumet.
  • Bรฅda variablerna innehรฅller tidsinformation.

PL/SQL LOB-datatyp

Denna datatyp anvรคnds huvudsakligen fรถr att lagra och manipulera stora block av ostrukturerad data, sรฅsom bilder och multimediafiler. Oracle fรถredrar LOB framfรถr datatypen LONG eftersom den รคr mer flexibel. De frรคmsta fรถrdelarna med LOB jรคmfรถrt med LONG รคr:

  • En tabell รคr begrรคnsad till en LONG-kolumn, medan det inte finns nรฅgon begrรคnsning pรฅ antalet LOB-kolumner.
  • Datagrรคnssnittsverktyg accepterar LOB under replikering men utelรคmnar LONG-kolumner, som mรฅste replikeras manuellt.
  • En LONG-kolumn lagrar upp till 2 GB, medan en LOB kan lagra upp till 128 TB.
  • Oracle fortsรคtter att fรถrbรคttra LOB-datatypen med varje utgรฅva, medan LONG i stort sett รคr ofรถrรคndrad.

Sรฅ det รคr alltid bra att anvรคnda LOB-datatypen istรคllet fรถr LONG. De olika LOB-datatyperna nedan kan lagra upp till 128 terabyte:

  1. KLICK
  2. CLOB och NCLOB
  3. BFIL
Data typ BESKRIVNING syntax
KLICK Den hรคr datatypen lagrar LOB-data i binรคrt filformat upp till maximalt 128 TB. Den lagrar inte data baserade pรฅ teckenuppsรคttningsdetaljer, sรฅ den kan lagra ostrukturerad data som multimediaobjekt och bilder.
Binary_data BLOB;

Syntaxfรถrklaring:

  • Variabeln 'Binary_data' deklareras som en BLOB.
CLOB och NCLOB CLOB lagrar LOB-data i teckenuppsรคttningen, medan NCLOB lagrar data i den ursprungliga teckenuppsรคttningen. Eftersom dessa anvรคnder teckenuppsรคttningsbaserad lagring kan de inte lagra data som multimedia eller bilder. Den maximala storleken รคr 128 TB.
Charac_data CLOB;

Syntaxfรถrklaring:

  • Variabeln 'Charac_data' deklareras som CLOB-datatypen.
BFIL
  • BFILE lagrar ostrukturerad binรคr data utanfรถr databasen som en operativsystemfil.
  • Storleken pรฅ en BFIL begrรคnsas av operativsystemet, och filerna รคr skrivskyddade och kan inte รคndras.

Vanliga frรฅgor

CHAR har fast lรคngd och blank-pads ut till den deklarerade storleken, vilket slรถsar utrymme pรฅ korta vรคrden. VARCHAR2 har variabel lรคngd och lagrar endast de faktiska tecknen, sรฅ det รคr att fรถredra fรถr de flesta strรคngkolumner.

LOB tillรฅter mรฅnga kolumner per tabell, lagrar upp till 128 TB och fรถrbรคttrar kontinuerligt varje utgรฅva. LONG รคr begrรคnsad till en kolumn, har en grรคns pรฅ 2 GB och behรฅlls huvudsakligen fรถr bakรฅtkompatibilitet.

Inte i รคldre versioner. BOOLEAN var en typ endast fรถr PL/SQL, sรฅ tabellkolumner anvรคnde en NUMBER- eller CHAR-flagga istรคllet. Den anvรคnds direkt inuti block fรถr villkorlig logik.

Ja. Genom att profilera exempelvรคrden fรถr lรคngd, intervall och format kan AI fรถreslรฅ VARCHAR2, NUMBER, DATE eller en LOB, och flagga kolumner som รคr รถverdimensionerade. Bekrรคfta valet mot framtida data.

Ja. DATE lagrar รฅrhundrade, รฅr, mรฅnad, dag, timme, minut och sekund. Om ingen tid anges anvรคnds midnatt som standard. Fรถr brรฅkdelar av sekunder eller tidszoner, anvรคnd TIMESTAMP istรคllet.

Sammanfatta detta inlรคgg med: