SET SCHEMA

Die Anweisung SET SCHEMA ändert den Wert des Sonderregisters CURRENT SCHEMA.

Aufrufen

Diese Anweisung kann in ein Anwendungsprogramm eingebettet oder interaktiv abgesetzt werden. Es handelt sich um eine ausführbare Anweisung, die dynamisch vorbereitet werden kann.

Berechtigung

Wenn in der Anweisung auf eine globale Variable verwiesen wird, müssen die Berechtigungen, die von der Berechtigungs-ID der Anweisung gehalten werden, mindestens eine der folgenden Berechtigungen enthalten:

  • Für die in der Anweisung angegebene globale Variable
    • Das Zugriffsrecht READ für die globale Variable und
    • Zugriffsrecht USAGE für das Schema, das die globale Variable enthält
  • Datenbankadministratorberechtigung

Syntax

Syntaxdiagramm lesenVisuelles Syntaxdiagramm überspringenSET CURRENTSCHEMACURRENT_SCHEMA  = schemanameSESSION_USERUSERCURRENT USERCURRENT_USERSYSTEM_USERVariableZeichenfolgekonstanteDEFAULT

Beschreibung

schemaname
Gibt ein Schema an Wenn der angegebene Schemaname ein Systemschemaname ist, wird nicht geprüft, ob das Schema vorhanden ist, wenn das aktuelle Schema festgelegt wird. Wenn der angegebene Schemaname kein Systemschemaname ist, muss das Schema vorhanden sein, wenn das aktuelle Schema festgelegt wird.

Wenn der angegebene Wert nicht den Regeln für schemanameentspricht, wird ein Fehler zurückgegeben.

SESSION_USER oder USER
Dieser Wert ist das Sonderregister SESSION_USER.
CURRENT USER
Gibt den Wert des Sonderregisters CURRENT USER an.
SYSTEM_USER
Dieser Wert ist das Sonderregister SYSTEM_USER.
Variable
Gibt eine Variable an, die einen Schemanamen enthält Es kann eine globale Variable sein, wenn sie mit einem Schemanamen qualifiziert ist. Der Inhalt wird nicht in Großbuchstaben umgesetzt.

Die Variable:

  • Muss eine Zeichenfolge oder eine Unicode-Grafikvariable sein. Die tatsächliche Länge des Inhalts der Variablen nach dem Abschneiden abschließender Leerzeichen darf die Länge eines Schemanamens nicht überschreiten. Siehe SQL-Grenzwerte.
  • Es darf keine Indikatorvariable folgen.
  • Darf nicht der Nullwert sein.
  • Muss den Regeln für die Bildung eines gewöhnlichen oder begrenzten Bezeichners entsprechen.
  • Muss rechts mit Leerzeichen aufgefüllt werden, wenn die Variable eine feste Länge hat.
  • Darf nicht das Schlüsselwort SESSION_USER, CURRENT_USER, SYSTEM_USER oder USER sein.
  • Wenn die Anweisung SET in einer SQL-Routine, einem SQL-Auslöser oder einer Compound-Anweisung angegeben wird, kann variable keine globale Variable mit einem nicht qualifizierten Namen sein.
zeichenfolgekonstante
Eine Zeichenkonstante mit einem Schemanamen.

Die Zeichenfolgekonstante:

  • Muss eine Länge haben, nachdem alle abschließenden Leerzeichen abgeschnitten wurden, die die maximale Länge eines Schemanamens nicht überschreiten
  • Muss einen Schemanamen enthalten, der linksbündig ausgerichtet ist und den Regeln für die Bildung einer gewöhnlichen oder begrenzten Kennung entspricht.
  • Darf nicht das Schlüsselwort SESSION_USER, CURRENT_USER, SYSTEM_USERoder USER sein.
STANDARD
Das CURRENT SCHEMA wird auf seinen Anfangswert gesetzt. Der Anfangswert für die SQL-Benennung ist USER. Der Anfangswert für die Systembenennung ist *LIB.

Hinweise

Hinweise zu Schlüsselwörtern: Es gibt einen Unterschied zwischen der Angabe eines einzelnen Schlüsselworts (z. B. USER) als einzelnes Schlüsselwort oder als begrenzte Kennung. Um anzugeben, dass der aktuelle Wert des Sonderregisters USER zum Festlegen des aktuellen Schemas verwendet werden soll, geben Sie USER als Schlüsselwort an. Wird USER stattdessen als abgegrenzter Bezeichner angegeben (z. B. "USER"), wird er als Schemaname dieses Wertes ("USER") interpretiert.

Hinweise zur Transaktion: Die Anweisung SET SCHEMA ist keine festschreibbare Operation. ROLLBACK hat keine Auswirkung auf das CURRENT SCHEMA.

Auswirkung auf andere Sonderregister: Die Einstellung des Sonderregisters CURRENT SCHEMA wirkt sich nicht auf das Sonderregister CURRENT PATH aus. Daher wird das CURRENT SCHEMA nicht in den SQL-Pfad und die SQL-Funktionen eingeschlossen, Prozeduren und die Auflösung des benutzerdefinierten Typs finden diese Objekte möglicherweise nicht. Wenn Sie den aktuellen Schemawert in den SQL-Pfad einschließen möchten, setzen Sie bei jedem Absetzen der Anweisung SET SCHEMA auch die Anweisung SET PATH mit dem Schemanamen aus der Anweisung SET SCHEMA ab.

CURRENT SCHEMA: Der Wert des Sonderregisters CURRENT SCHEMA wird als Qualifikationsmerkmal für einige nicht qualifizierte Namen in allen dynamischen SQL-Anweisungen verwendet, außer in Programmen, in denen DYNDFTCOL angegeben wurde. Wenn DYNDFTCOL in einem Programm angegeben wird, wird dessen Schemaname anstelle des Schemanamens CURRENT SCHEMA verwendet. Informationen zur Qualifizierung von Namen finden Sie unter Qualifizierung nicht qualifizierter Objektnamen.

Bei der SQL-Benennung entspricht der Anfangswert des Sonderregisters CURRENT SCHEMA dem Wert USER. Bei der Systembenennung ist der Anfangswert des Sonderregisters CURRENT SCHEMA '*LIBL'.

Syntaxalternativen: CURRENT SQLID wird als Synonym für CURRENT SCHEMA akzeptiert und die Auswirkung einer Anweisung SET CURRENT SQLID ist mit der einer Anweisung SET CURRENT SCHEMA identisch. Andere Auswirkungen, z. B. Änderungen der Anweisungsberechtigung, treten nicht auf.

SET SCHEMA entspricht dem Aufruf der API QSQCHGDC.

Beispiele

Beispiel 1: Die folgende Anweisung legt das Sonderregister CURRENT SCHEMA fest.

  SET SCHEMA = RICK 

Beispiel 2: Im folgenden Beispiel wird der aktuelle Wert des Sonderregisters CURRENT SCHEMA in die Hostvariable CURSCHEMA abgerufen.

  EXEC SQL VALUES(CURRENT SCHEMA) INTO :CURSCHEMA 

Der Wert wäre RICK, wie im vorherigen Beispiel festgelegt.