Dazu ein einfaches Beispiel:
declare subtype name_st is varchar2(30); v1 name_st; v2 name_st; v3 name_st; . . . vn name_st; begin ... end;Der Subtyp
NAME_ST
schränkt den Typ VARCHAR2
auf eine Länge von 30 ein. Nun kann dieser zur Deklaration von Variablen verwendet werden. Zusätzlich dazu kann ein Subtyp um einen NOT NULL
Constraint erweitert werden (in diesem Fall sind bei der Deklaration Werte vom entsprechenden Typ anzugeben):declare subtype name_st is varchar2(30) not null; v1 name_st := '1'; v2 name_st := '2'; v3 name_st := '3'; . . . vn name_st := 'n'; begin ... end;Ein Subtyp vom Typ
BINARY_INTEGER
bzw. PLS_INTEGER
kann zudem eine Angabe zum zulässigen Bereich enthalten.declare subtype percentage_st is binary_integer range 0 .. 100; v_percentage percentage_st; begin ... end;Auch hier kann optional ein
NOT NULL
Constraint angegeben werden.Leider funktioniert die Angabe des Bereichs nicht für die Typen
BINARY_FLOAT
und BINARY_DOUBLE
. Siehe dazu auch das Oracle White Paper PL/SQL conditional compilation vom Oktober 2005, welches auf Seite 49 in Fußnote 58 eine solche Erweiterung vorschlägt.Besonders hilfreich erscheint mir die Verwendung von Subtypen im Kontext von Packages. Zum einen spart man sich mitunter einige Zeilen PL/SQL Code durch die Angabe eines zulässigen Bereichs und zum anderen kann der Subtyp an mehreren Stellen im Package verwendet werden. Als Typ für die Deklaration einer Variablen, wie als Typ für einen Parameter von Funktionen oder Prozeduren.
Mehr dazu findet man in der Dokumentation.
Keine Kommentare:
Kommentar veröffentlichen