Mit dieser Anweisung setzen Sie Datenbankoptionen für die aktuelle Verbindung auf Adaptive Server Enterprise-kompatible Art fest.
SET OptionsnameOptionswert
Die folgenden Optionen stehen zur Verfügung:
Name der Option | Wert der Option |
---|---|
ansinull | On oder Off |
ansi_permissions | On oder Off |
close_on_endtrans | On oder Off |
datefirst |
1, 2, 3, 4, 5, 6 oder 7 Die Einstellung dieser Option beeinflusst das Ergebnis von DATEPART beim Erhalt eines Wochentagwerts. Weitere Hinweise zur Angabe des ersten Wochentags finden Sie unter first_day_of_week-Option [Datenbank] and DATEPART-Funktion [Datum und Uhrzeit]. |
quoted_identifier | On | Off |
rowcount | Ganzzahl |
self_recursion | On | Off |
string_rtruncation | On | Off |
textsize | Ganzzahl |
transaction isolation level | 0, 1, 2, 3, snapshot, statement-snapshot oder readonly-statement-snapshot |
Datenbankoptionen werden in SQL Anywhere mit der SET OPTION-Anweisung eingestellt. SQL Anywhere unterstützt jedoch auch die in Adaptive Server Enterprise verwendete SET-Anweisung für Optionen, die für die Kompatibilität nützlich sind.
Die folgenden Optionen können mithilfe der Transact-SQL-Anweisung SET in SQL Anywhere und in Adaptive Server Enterprise gesetzt werden:
SET ansinull { On | Off } Das standardmäßige Verhalten zum Vergleichen von Werten mit NULL in SQL Anywhere und Adaptive Server Enterprise ist unterschiedlich. Wenn ansinull auf OFF gesetzt wird, können Transact-SQL-kompatible Vergleiche mit NULL ausgeführt werden.
SQL Anywhere unterstützt auch die folgende Syntax:
SET ansi_nulls { On | Off }
Weitere Hinweise finden Sie unter ansinull-Option [Kompatibilität].
SET ansi_permissions { On | Off } Das standardmäßige Verhalten in Bezug auf erforderliche Berechtigungen zum Ausführen von UPDATE oder DELETE mit einer Spaltenreferenz ist in SQL Anywhere und Adaptive Server Enterprise unterschiedlich. Wenn ansi_permissions auf OFF gesetzt wird, ergeben sich Transact-SQL-kompatible Berechtigungen für UPDATE und DELETE. Weitere Hinweise finden Sie unter ansi_permissions-Option [Kompatibilität].
SET close_on_endtrans { On | Off } Das Standardverhalten in SQL Anywhere und Adaptive Server Enterprise zum Schließen von Cursors am Ende einer Transaktion ist unterschiedlich. Wenn close_on_endtrans auf OFF gesetzt wird, ergibt sich ein Transact-SQL-kompatibles Verhalten. Weitere Hinweise finden Sie unter close_on_endtrans-Option [Kompatibilität].
SET datefirst { 1 | 2 | 3 | 4 | 5 | 6 | 7 } Der Standardwert ist 7, d.h., der erste Tag der Woche ist standardmäßig Sonntag. Hinweise zur permanenten Einstellung dieser Option finden Sie unter first_day_of_week-Option [Datenbank].
SET quoted_identifier { On | Off } Damit wird gesteuert, ob Zeichenfolgen in Anführungszeichen als Bezeichner (On) oder als Literale (Off) interpretiert werden. Weitere Hinweise finden Sie unter Optionen für die Kompatibilität mit Transact-SQL einstellen und quoted_identifier-Option [Kompatibilität].
SET rowcount Ganzzahl. Die Transact-SQL-Option ROWCOUNT begrenzt die Anzahl der Zeilen, die für einen beliebigen Cursor abgerufen werden, auf die angegebene Ganzzahl. Dazu gehören Zeilen, die durch Neupositionierung des Cursors abgerufen werden. Jegliche Abrufe über dieses Maximum hinaus führen zu einer Warnmeldung. Die Optionseinstellung wird berücksichtigt, wenn die Schätzung der Zeilenanzahl für einen Cursor bei einer OPEN-Anforderung zurückgegeben wird.
SET ROWCOUNT begrenzt auch die Anzahl der Zeilen, die von einer gesuchten UPDATE- oder DELETE-Anweisung betroffen sind, auf Ganzzahl. Dies kann z.B. eingesetzt werden, um zuzulassen, dass COMMIT-Anweisungen in regelmäßigen Intervallen ausgeführt werden, um die Größe des Rollback-Logs und der Sperrentabelle einzuschränken. Die Anwendung (bzw. die Prozedur) müsste mit einer Schleife ausgeführt werden, damit UPDATE/DELETE für die Zeilen erneut ausgeführt werden, die vom ersten Vorgang nicht betroffen sind. Es folgt ein einfaches Beispiel:
BEGIN DECLARE @count INTEGER SET rowcount 20 WHILE(1=1) BEGIN UPDATE Employees SET Surname='new_name' WHERE Surname <> 'old_name' /* Stop when no rows changed */ SELECT @count = @@rowcount IF @count = 0 BREAK PRINT string('Updated ', @count,' rows; repeating...') COMMIT END SET rowcount 0 END |
Wenn in SQL Anywhere die Einstellung für ROWCOUNT größer ist als die Anzahl der Zeilen, die Interactive SQL anzeigen kann, besteht die Möglichkeit, dass Interactive SQL einige zusätzliche Abrufvorgänge ausführt, um den Cursor neu zu positionieren. So kann die Anzahl der tatsächlich angezeigten Zeilen niedriger sein als die angeforderte Anzahl. Wenn darüber hinaus Zeilen aufgrund von Kürzungswarnungen erneut abgerufen werden, kann die Zählung ungenau sein.
Ein Wert von Null setzt die Option zurück, sodass alle Zeilen abgerufen werden.
SET self_recursion { On | Off } Die Option self_recursion wird innerhalb von Triggern eingesetzt, um zu ermöglichen (On) bzw. zu verhindern (Off), dass Vorgänge in der dem Trigger zugeordneten Tabelle andere Trigger auslösen.
SET string_rtruncation { On | Off } Das Standardverhalten in SQL Anywhere und Adaptive Server Enterprise ist unterschiedlich, wenn beim Zuordnen von SQL-Textdaten Zeichen gekürzt werden, die keine Leerstellen sind. Wenn string_rtruncation auf On gesetzt wird, ergeben sich Transact-SQL-kompatible Zeichenfolgenvergleiche. Weitere Hinweise finden Sie unter string_rtruncation-Option [Kompatibilität].
SET textsize Dient zur Angabe der maximalen Größe (in Byte) für Daten vom Typ Text oder Bild, die mit einer Select-Anweisung zurückgegeben werden sollen. In der globalen Variablen @@textsize wird die derzeitige Einstellung gespeichert. Mit dem folgenden Befehl wird die Standardgröße (32 KByte) wiederhergestellt:
set textsize 0 |
SET transaction isolation level { 0 | 1 | 2 | 3 | snapshot | statement-snapshot | readonly-statement-snapshot\} Dient zum Festlegen der Sperr-Isolationsstufe für die aktuelle Verbindung, wie in Isolationsstufen und Konsistenz beschrieben wird. Bei Adaptive Server Enterprise sind nur 1 und 3 gültige Optionen. Bei SQL Anywhere sind 0, 1, 2, 3, snapshot, statement-snapshot oder readonly-statement-snapshot gültige Optionen. Weitere Hinweise finden Sie unter isolation_level-Option [Datenbank] [Kompatibilität].
Die SET-Anweisung ist in SQL Anywhere für die prefetch-Option aus Kompatibilitätsgründen zulässig, hat aber keine Auswirkungen.
Keine.
Keine.
SQL/2003 Transact-SQL-Erweiterung
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |