Die CREATE USER-Anweisung (create_user_statement) definiert einen Benutzer. Die Existenz und die Eigenschaften des Benutzers werden in Form von Metadaten im Datenbankkatalog abgelegt.
<create_user_statement> ::= CREATE USER <user_name> PASSWORD
<password>
[<user_mode>]
[TIMEOUT <unsigned_integer>] [COSTWARNING <unsigned_integer>]
[COSTLIMIT <unsigned_integer>] [[NOT] EXCLUSIVE] [DEFAULTCODE <ASCII
| EBCDIC | UNICODE>]
| CREATE USER <user_name> PASSWORD <password> LIKE
<source_user>
| CREATE USER <user_name> PASSWORD <password> USERGROUP
<usergroup_name>
user_name, user_mode, unsigned_integer, usergroup_name
Der aktuelle Benutzer muss ein DBA-Benutzer sein. Er wird Eigentümer des erzeugten Benutzers.
Der angegebene Benutzername darf nicht mit dem Namen eines existierenden Benutzers einer Benutzergruppe oder einer Rolle übereinstimmen.
Das Kennwort (password) muss bei der Eröffnung einer Datenbanksitzung angegeben werden. Es stellt sicher, dass nur berechtigte Benutzer Zugang zum Datenbanksystem erhalten.
Die gegebenenfalls angegebenen ganzen Zahlen ohne Vorzeichen (unsigned_integer) müssen stets größer als 0 sein.
Dem Benutzer steht für die Ablage seiner privaten und temporären Tabellen unbegrenzt viel Plattenplatz zur Verfügung (im Rahmen der bei der Installation angegebenen Größen der Data-Volumes).
Die Angabe des Timeout-Wertes erfolgt in Sekunden und muss im Bereich von 30 und 32400 liegen.
Nur der SYSDBA-Benutzer darf Benutzer mit dem Timeout-Wert 0 definieren.
Mit diesen Angaben kann verhindert werden, dass ein Benutzer beliebig komplizierte und damit kostenintensive QUERY-Anweisungen oder INSERT-Anweisungen der Form INSERT...SELECT... ausführen kann.
Vor Ausführung einer dieser SQL-Anweisungen werden die durch die Ausführung zu erwartenden Kosten geschätzt. Dieser SELECT-Kosten-Schätzwert kann mit der EXPLAIN-Anweisung ausgegeben werden. Der SELECT-Kosten-Schätzwert wird im interaktiven Betrieb mit den für den Benutzer angegebenen Werten für COSTWARNING und COSTLIMIT verglichen.
Für QUERY-Anweisungen oder INSERT-Anweisungen der Form INSERT...SELECT..., die in eine Programmiersprache eingebettet sind, werden die Werte COSTWARNING und COSTLIMIT nicht beachtet.
COSTWARNING: Dieser Wert gibt an, ab welchem SELECT-Kosten-Schätzwert der Benutzer eine Warnung erhält. Im Falle einer Warnung wird der Benutzer gefragt, ob die SQL-Anweisung wirklich ausgeführt werden soll.
COSTLIMIT: Dieser Wert gibt an, ab welchem SELECT-Kosten-Schätzwert die SQL-Anweisung nicht ausgeführt wird.
Der COSTLIMIT-Wert muss größer als der COSTWARNING-Wert sein.
EXCLUSIVE: Es ist nicht möglich, gleichzeitig zwei verschiedene Datenbanksitzungen des Benutzers zu eröffnen.
NOT EXCLUSIVE: Es ist möglich, gleichzeitig mehrere Datenbanksitzungen des Benutzers zu eröffnen.
Wenn die EXCLUSIVE-Bedingung nicht angegeben wird, dann wird implizit EXCLUSIVE (ohne NOT) angenommen.
Für die Objekte des angegebenen Benutzers wird der Wert des Datenbankparameters DEFAULT_CODE mit dem in DEFAULTCODE angegebenen Codeattribut übersteuert.
Der aktuelle Benutzer muss das Eigentümerrecht an dem Quellbenutzer (source_user) besitzen.
Wenn der Quellbenutzer nicht Mitglied einer Benutzergruppe ist, dann erhält der neu definierte Benutzer die gleiche Benutzerklasse und die gleichen Werte für PERMLIMIT, TEMPLIMIT, TIMEOUT, COSTWARNING und COSTLIMIT und für die EXCLUSIVE-Angabe wie der Quellbenutzer. Der neu definierte Benutzer erhält alle Privilegien, die der Quellbenutzer von anderen Benutzern verliehen bekommen hat.
Wenn der Quellbenutzer Mitglied einer Benutzergruppe ist, dann wird ein neues Mitglied dieser Benutzergruppe mit dem neu definierten Benutzernamen definiert.
Der die SQL-Anweisung absetzende Benutzer muss Eigentümer der angegebenen Benutzergruppe sein. Der neu definierte Benutzer wird Mitglied dieser Benutzergruppe.