Oracle 12c: Neue Funktionen für Entwickler

von Robert Marz (Kommentare: 0)

oracle_12cIm Sommer letzten Jahres hat Oracle das aktuelle Hauptrelease »12c« der Datenbank der Allgemeinheit zur Verfügung gestellt. Über das Killer-Feature, die »Pluggable-Databases« wurde bereits ausführlich berichtet.

Daneben gibt es für die Anwendungsentwicklung zahlreiche Erweiterungen, von denen wir drei in diesem Artikel vorstellen wollen:

Übergroße Textspalten

Die Zeiten, in denen Datenmodellierer neidisch auf die maximalen Feldgrößen anderer Datenbanken schauten, sind vorbei. Ohne mit komplizierten CLOB-Spalten zu kämpfen, können Varchar2 Felder 32767 anstatt 4000 Zeichen Inhalt enthalten. Gesteuert wird das Verhalten über den Systemparameter »max_string_size«. Der Wert »Standard« repräsentiert die bisherige Größe, »Extended« schaltet die Funktionalität frei. Nach dem aktivieren der Funktion durch das Skript utl32k.sql im upgrade-mode, werden überlange Varchar2-Spalten ähnlich wie CLOBs außerhalb der Datenzeilen gespeichert. Die Änderungen im Data-Dictionary sind unumkehrbar. Ein Downgrade auf 11g ist danach unmöglich.

Callstack

Wer vor 12c feststellen wolle, durch wen die aktuelle PL/SQL Prozedur aufgerufen wurde, musste sich mit »dbms_utility.format_call_stack« auseinandersetzen.

Dieses Builtin produzierte eine Textausgabe, die aufwendig interpretiert werden musste.

Das neue Package utl_call_stack enthält Funktionen, mit denen die Verschachtelungstiefe des derzeitigen Codes sowie die Namen und Zeilennummern der übergeordneten Programmeinheiten ermittelt werden können.

Ergebnisfenster abrufen

Das SQL-Vokabular ist umfangreicher geworden: Am Ende einer »select«-Anweisung veranlassen die Schlüsselwörter »fetch first 20 rows only« die Datenbank nur die ersten zwanzig Zeilen zurückzuliefern und die Abfrage darauf zu optimieren. Das ist praktisch, wenn zum Beispiel Daten für eine Bildschirmseite geliefert werden sollen. Die nächste Seite beliefert dann diese Anweisung: »offset 20 rows fetch next 20 rows only«.

Eine funktionierende Abfrage sieht so aus:

[code language="sql"] select empno, ename, job from emp order by empno fetch first 3 rows only;

select empno, ename, job from emp order by empno offset 3 rows fetch next 3 rows only;

Zurück

Einen Kommentar schreiben