Ich versuche, ein Skript zu erstellen, das Benutzer erstellt, wenn sie nicht bereits vorhanden sind .
%Vor%Der folgende Fehler wird angezeigt:
SQL-Fehler: ORA-00922: fehlende oder ungültige Option
Ich konnte dies in SQL Server 2008 mithilfe von
tun %Vor%Gibt es eine ähnliche Vorgehensweise in Oracle, um zu überprüfen, ob ein Benutzer bereits existiert, bevor Sie versuchen, einen neuen Benutzer zu erstellen?
Die in SQL Server verfügbare IF NOT EXISTS
-Syntax ist in Oracle nicht verfügbar.
Im Allgemeinen führen Oracle-Skripte einfach die CREATE
-Anweisung aus, und wenn das Objekt bereits existiert, erhalten Sie einen Fehler, der darauf hinweist, dass Sie dies ignorieren können. Dies ist alles, was alle Oracle-Bereitstellungsskripts tun.
Wenn Sie jedoch wirklich auf Existenz prüfen möchten und nur ausführen, wenn das Objekt nicht existiert, vermeiden Sie den Fehler. Sie können also ein PL/SQL
codieren. Block. Schreibe ein SQL
, das nach dem Vorhandensein des Benutzers sucht, und wenn es nicht existiert, benutze EXECUTE IMMEDIATE
, um CREATE USER
vom PL/SQL
Block zu machen.
Ein Beispiel für einen solchen PL / SQL-Block könnte sein:
%Vor%Ich hoffe, das hilft.
Sie müssen einen PL / SQL-Block schreiben. Siehe ein Beispiel hier
Sie können prüfen, ob der Benutzer in der all_users-Tabelle existiert, indem Sie einen pl / sql-Code wie:
verwenden %Vor%und verwenden Sie dann v_count_user in einer IF-Bedingung, um die create user-Anweisung bedingt auszuführen.
Aus den vorherigen Antworten geht hervor, dass if not exists
in Oracle nicht unterstützt wird. Um zu klären, welche Fehler von Oracle ausgelöst werden, wenn versucht wird, einen bereits vorhandenen Benutzer zu erstellen (und als Bonus, wenn ein nicht existierender Benutzer gelöscht werden soll):
Die obigen Anweisungen wurden auf Oracle Database 11g Enterprise Edition Version 11.2.0.1.0 - 64-Bit-Produktion
ausgeführtTags und Links oracle oracle11g createuser