Oracle SQL Developer - Erstellen-Funktion Mit Skript
[Erklärung]
Wenn ich will erstellen Sie eine Funktion, die gehört zum schema 'A', Es ist mein Verständnis, dass ich zu Paket erstellen im schema 'A', und implementieren Sie die Funktion. (Bitte korrigieren Sie mich, wenn es einen anderen Weg, dies zu tun).
Wenn ich versuche eine Funktion zu erzeugen, mit einem Skript-Dateien (Beispiel. Neue Galerie -> SQL-Dateien (Datenbank-Dateien) zu erstellen, ohne Titel.sql), ich bin immer verwirrt, weil die Funktion gehört nicht auf ein schema und es wird gespeichert werden, in Global.
[Frage]
1) erstellen Sie die Funktion gehört zum schema 'A' Skript verwenden?
2) Die Funktion gespeichert in global keinen Zugriff auf schema-Tabelle, wie kann ich es beheben?
- IMO Verwendung der GUI ist keine nachhaltige Lösung. Statt eine Funktion schreiben, die code mit Ihrem Lieblings-text-editor, speichern Sie die Datei als nur-text-Datei in die version control system; ausführen/ausführen der Datei in einer Datenbank von der Kommandozeile mit SQL*Plus. Eine GUI ist großartig für das Lesen der Datenbank, aber nie erstellen/ändern von PL/SQL-code direkt in eine Datenbank mit GUI.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin völlig einverstanden mit Ascalon. Zum Wohle Ihrer Frage, ich werde Anweisungen geben, wie Sie eine Funktion erstellen, die mithilfe der SQL Developer-GUI-tools und-dies wird ein Skript generieren.
Viele Möglichkeiten, die würde ich eher verwenden Sie SQL*Plus. Für das wohl von meinem Beispiel verwende ich die standard-Oracle-beispielschema SCOTT.
Frage 1: Wie Erstellen Sie eine Funktion Mithilfe von Skripts
Hinweis: ich zeigen, wie Sie diese Funktion über die GUI-tools in SQL Entwickler und generieren Sie ein Skript
Wenn Sie angemeldet sind Datenbank-Benutzer, SCOTT, einfach mit der rechten klicken Sie auf Benutzer SCOTT die Funktionen und wählen Sie "Neue Funktion"
Einen "Create Function" - Dialogfeld wird geöffnet.
Du nur ändern Sie den Namen entsprechend den Namenskonventionen und Ihr Projekt. Wählen Sie Ihre option, und wählen Sie OK.
In der nächsten code-editor, ändern Sie die Funktion mehr an Ihre Bedürfnisse anpassen:
Hier ist mein endgültiger Entwurf. Wählen Sie 'Kompilieren':
Nun es zeigt und zeigt, wie eine function-Objekt, das im Besitz von SCOTT. Das GUI-tool generiert eine script-Funktion ohne qualifying SCOTT ' s Eigentum. Wenn es keine Qualifikation, die Funktion ist standardmäßig im Besitz von SCOTT. :
Wenn ich rufe diese Funktion in einer SQL-Developer Arbeitsblatt angemeldet als SCOTT, wir sehen es hier:
Im Allgemeinen, wenn Sie freigeben möchten, ein Objekt für alle Benutzer, die standard-Vorgehensweise ist zu erteilen, ausführen, um öffentliche oder öffentliche synonym. Hier ist ein Beispiel für die Gewährung ausführen, um die öffentlichkeit:
Können Sie dann überprüfen Sie die Berechtigungen mit anderen Benutzern:
Im Allgemeinen, über das GUI
tool ist nice und hilft Ihnen, die richtige syntax. Nach einer Weile werden Sie wahrscheinlich aufgeben, diese (sehr langsam und umständlich).
Frage 2: Die Funktion gespeichert in global keinen Zugriff auf schema-Tabelle, wie kann ich es beheben?
Gibt es viele Möglichkeiten, um, wie grant select-Zugriff auf eine Tabelle.
Mit meinem Beispiel, könnte man grant select auf Tabelle, um die Funktion Eigentümer, SCOTT.
Könnte man das in etwa so machen:
GRANT SELECT ON OTHER_SCHEMA.PRECIOUS_TABLE TO SCOTT;
Anderen gemeinsamen Ansatz könnte sein, gewähren Sie dem system-Privileg SELECT ANY TABLE SCOTT. Natürlich sollte die Sicherheit immer berücksichtigt werden und das Prinzip der Gewährung der geringsten Menge von Berechtigungen zum ausführen einer Aufgabe eingehalten werden sollten.
Brauchen Sie nicht, um ein Paket benutzen, um eine Funktion zu erstellen. Funktionen stand-alone-Objekte.
Einen script erstellen kann eine Funktion gefunden werden, durch das Lesen der Oracle-Dokumentation auf, wie Sie Funktionen erstellen.
Erstellen, es in einem bestimmten schema, fügen Sie einfach den schema-Namen, um den Namen der Funktion ODER melden Sie sich als anderen Benutzer.
Hinweis: Wenn Sie eine Funktion erstellen, die in einem anderen schema, müssen Sie die ERSTELLEN einer PROZEDUR Privileg.