Databases Reference
In-Depth Information
RETURN INTEGER IS
ergebnis INTEGER DEFAULT 0;
BEGIN
FOR I IN 1..zahl
LOOP
if zahl mod i=0
THEN
ergebnis:=ergebnis+1;
END IF;
END LOOP;
RETURN ergebnis;
END;
Dabei steht mod für den Rest bei der ganzzahligen Division, al-
so z. B. 7 mod 3 ergibt 1. Der direkte Aufruf von Funktionen ge-
schieht mit einem Oracle-spezifischen Trick, mit dem man auch
an weitere Systeminformationen gelangen kann. Dazu gibt es
eine Pseudo-Tabelle DUAL, die zwar keinen Inhalt hat, bei de-
ren Nutzung aber die in der SELECT-Zeile aufgerufene Funkti-
onalität in besonderer Form bearbeitet wird. Der Aufruf der
Funktion sieht wie folgt aus.
SELECT AnzahlTeiler(42) FROM DUAL;
Die zugehörige Ausgabe lautet wie folgt.
ANZAHLTEILER(42)
----------------------
8
Genau wie in Pascal oder C können Funktionen und Prozedu-
ren andere Funktionen und Prozeduren aufrufen, was durch
das folgende kleine Beispiel verdeutlicht werden soll. Man be-
achte, dass kein Schlüsselwort EXECUTE benutzt werden darf.
CREATE OR REPLACE PROCEDURE Primzahl
(zahl INTEGER)
IS
BEGIN
IF anzahlTeiler(zahl)=2
THEN
DBMS_OUTPUT.PUT_LINE('ist Primzahl');
ELSE
DBMS_OUTPUT.PUT_LINE('keine Primzahl');
END IF;
END;
Die Aufrufe
EXECUTE Primzahl(42);
EXECUTE Primzahl(43);
255
Search WWH ::




Custom Search