VARRAY er en forkortelse af en variabel array. En VARRAY gemmer elementer af samme type, i den orden de er indsat. Antallet af elementer skal kendes ved oprettelse.
Med andre ord har et VARRAY, faste rammer for øvre samt nedre grænser. Når et VARRAY er oprettet kan det tilgåes via et numerisk index, som man også kender det fra andre programmering sprog.
Følgende udtryk opretter og befolker, et VARRAY der indeholder 4 elementer af samme type som kolonnen record_name i tabellen records:
DECLARE TYPE records IS VARRAY(4) OF records.record_name%TYPE; _genres records; BEGIN _genres := records('ROCK','POP', 'WESTERN','SWING'); END;
Records typen kunne godt have været erklæret som VARCHAR(20), men læg mærke til jeg bruger %TYPE, det er altid en god ide, da %TYPE tiltager kolonne typen, i pågældende database tabel, som den ser ud nu. Med andre ord skulle database grundlaget ændre sig fra f.eks VARCHAR(20) til VARCHAR(35), skal du ikke ændre nogensteder i din kode pga. %TYPE.
Et VARRAY er ideelt til at gemme værdier med fast størrelse der behandles som mængde. Hvis dit behov er at kunne gemme samlinger/collections i databasen, men samtidigt vil kunne have flexibilitet til at manipulerere ved enkelt elementer, er NESTED TABLES en bedre løsning.
Alle PLSQL collections, indeholder et sæt indbyggede metoder som man kan benytte i arbejdet med disse typer.
Metode | Udførsel |
---|---|
COUNT | Retuner antal elementer i en samling |
EXISTS | Retunerer Boolean sand hvis elementet udfra specificerede index findes ellers falsk |
EXTEND | Udvider en samling med 1 eller antal angivet EXTEND(n) **Kan ikke benyttes med Associative Array |
FIRST | Naviger til første element i samlingen |
LAST | Naviger til sidste element i samlingen |
PRIOR | Naviger til forgående element i samlingen |
NEXT | Naviger til næste element i samlingen |
TRIM | Fjerner sidste element, eller antal elementer angivet TRIM(n) **Kan ikke benyttes med Associative Array |
DELETE | Sletter alle elementer i en samling, eller det element der angives, hvis parameteren er specificeret |
Nedenstående er; Dictionary data information, definition samt eksempler på brugen af VARRAY's m.v. Det er simpelthen den praktiske del vedr. VARRAY's.
"VARRAY er en forkortelse af en variabel array" | ||||||||||||||||
Data Dictionary Objekter | col$ tab$
|
|||||||||||||||
System Priviledger | CREATE TYPE CREATE ANY TYPE DROP ANY TYPE |
|||||||||||||||
Definering af objekt som TYPE | CREATE OR REPLACE TYPE Record AS OBJECT ( record_no NUMBER(2), title VARCHAR2(35), cost NUMBER(7,2)); / desc record SELECT type_name, typecode, instantiable FROM user_types; |
|||||||||||||||
Definering af VARRAY som objekt type |
CREATE OR REPLACE TYPE RecordList AS VARRAY(50) OF Record; |
|||||||||||||||
Tabel oprettelse på baggrund af VARRAY | CREATE TABLE genres ( genre_id NUMBER(2), name VARCHAR2(15), budget NUMBER(11,2), records RecordList); desc genres set describe depth all linenum on indent on desc genres; |
|||||||||||||||
Indsættelse af data i en VARRAY |
INSERT INTO genres |
|||||||||||||||
Sletning af data i en VARRAY |
DELETE FROM genres WHERE genre_id = 2;
|