Montag, 1. August 2011

Verwendung von PL/SQL Subtypes

Heute geht's um die Verwendung von Subtypen in PL/SQL.

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