Sie können mit dem Assistenten Neues PL/SQL-Paket benutzerdefinierte PL/SQL-Funktionen in einem PL/SQL-Paket erstellen.
Vorgehensweise
Gehen Sie wie folgt vor, um eine benutzerdefinierte PL/SQL-Funktion über ein Datenentwicklungsprojekt zu erstellen:
- Klicken Sie im Datenprojektexplorer mit der rechten Maustaste auf das Ordnerschema PL/SQL-Pakete und klicken Sie auf . Der Assistent Neues PL/SQL-Paket wird geöffnet.
- Führen Sie die Schritte des Assistenten aus.
Der Assistent erstellt das PL/SQL-Paket und fügt es dem Ordner PL/SQL-Pakete hinzu und die PL/SQL-Paketspezifikation wird im Routineneditor geöffnet.
- Fügen Sie in der Spezifikation den Namen und die Variablen der Funktion hinzu.
Beispiel:
CREATE OR REPLACE PACKAGE emp_admin
IS
...
FUNCTION SampleFunction RETURN integer;
...
END emp_admin;
- Klicken Sie auf die Registerkarte Hauptteil und bearbeiten Sie den Hauptteil des PL/SQL-Pakets. Fügen Sie dabei die Funktion hinzu. Beispiel:
--
-- Package body for the 'emp_admin' package.
--
CREATE OR REPLACE PACKAGE BODY emp_admin AS
FUNCTION hire_emp (name VARCHAR2, job VARCHAR2,
mgr NUMBER, hiredate DATE, sal NUMBER, comm NUMBER,
deptno NUMBER) RETURN NUMBER IS
END;
- Speichern Sie das Paket.
Ergebnisse
Standardmäßig wird das Paket bei seiner Erstellung nicht in der Datenbank registriert. Wenn Sie das Paket in der Datenbank registrieren möchten, müssen Sie diese Funktion implementieren.
Eine benutzerdefinierte PL/SQL-Funktion kann nur überladen werden, wenn alle Routinen mit demselben Namen und Typ im selben PL/SQL-Paket enthalten sind. In einem PL/SQL-Paket kann eine Prozedur oder Funktion von einer anderen Prozedur oder Funktion überladen werden, die denselben Typ und Namen jedoch eine andere Anzahl Parameter hat. Eine Funktion in einem Paket kann von einer anderen Funktion mit derselben Anzahl Parameter überladen werden, wenn einer der Parameter einen anderen Datentyp aufweist. Eine überladene Prozedur oder Funktion in einem PL/SQL-Paket zeigt die Anzahl Parameter in Klammern an:
Für eine Prozedur prüft die Engine lediglich die Parameteranzahl und den Prozedurnamen. Der Datentyp des Parameters spielt keine Rolle, egal ob es sich um IN, IN OUT oder OUT handelt.
Für eine Funktion prüft die Engine den Parameterdatentyp, die Anzahl und den Funktionsnamen.
Function(1)
Function(2)
Nachdem Sie das PL/SQL-Paket erstellt haben, können Sie das Paket implementieren und ausführen.