Ändert die Daten an der aktuellen Cursorposition.
UPDATE WHERE CURRENT OF cursor-name { USING [ SQL ] DESCRIPTOR sqlda-name | { [ FROM ] | [ USING ] } hostvar-list }
UPDATE update-table, ... SET set-item, ... WHERE CURRENT OF cursor-name
hostvar-list : indicator variables allowed
update-table :
[owner-name.]object-name [ [ AS ] correlation-name ]
set-item : [ correlation-name.]column-name = { expression | DEFAULT } | [ owner-name. ]object-name.column-name = { expression | DEFAULT }
object-name : identifier (Tabellen- oder Ansichtname)
sqlda-name : identifier
UPDATE-Klausel Jede update-table wird mit einer Tabelle in der Abfrage für den Cursor wie folgt verglichen:
Wenn ein Korrelationsname angegeben ist, wird sie mit einer Tabelle in der Abfrage für den Cursor verglichen, die denselben table-or-view-name- und denselben correlation-name-Parameter hat.
Wenn die Abfrage des Cursors eine Tabelle enthält, die denselben table-or-view-name-Wert aufweist, aber keinen Korrelationsnamen hat, oder einen Korrelationsnamen hat, der mit dem table-or-view-name-Wert übereinstimmt, wird die Aktualisierungstabelle mit dieser Tabelle in der Abfrage des Cursors abgeglichen.
Wenn die Abfrage des Cursors eine einzige Tabelle enthält, die denselben table-or-view-name-Wert aufweist wie die Aktualisierungstabelle, wird die Aktualisierungstabelle mit dieser Tabelle in der Abfrage des Cursors abgeglichen.
Wenn für eine Spalte ein Standardwert definiert ist, können Sie die SET-Klausel verwenden, um eine Spalte auf ihren Standardwert zu setzen. Ein Beispiel dafür finden Sie im Abschnitt "Beispiele" unter UPDATE-Anweisung.
USING DESCRIPTOR-Klausel Wenn eine Variable zugeordnet wird, muss diese bereits deklariert sein und ihr Name muss mit dem At-Zeichen (@) beginnen. Variablen- und Spaltenzuordnungen können gemischt werden, und die Verwendung jeglicher Zahl ist möglich.
SET-Klausel Die im set-item angegebenen Spalten müssen sich in der zu aktualisierenden Tabelle oder Ansicht befinden. Wenn in der SET-Liste ein Name auf der linken Seite einer Zuordnung sowohl einer Spalte in der aktualisierten Tabelle als auch einem Variablennamen entspricht, wird die Anweisung die Spalte aktualisieren.Das set-item kann weder Aliasnamen noch Spalten aus anderen Tabellen oder Ansichten referenzieren. Wenn der zu aktualisierenden Tabelle oder Ansicht in der Cursorspezifikation ein Korrelationsname zugewiesen ist, müssen Sie diesen Korrelationsnamen in der SET-Klausel verwenden.
Jedes set-item ist einer einzigen update-table zugeordnet, und die entsprechende Spalte der passenden Tabelle in der Cursorabfrage wird geändert. Der expression referenziert Spalten der in der UPDATE-Liste angegebenen Tabellen und kann Konstanten, Hostvariablen, Variablen, Ausdrücke aus der SELECT-Liste der Abfrage oder Kombinationen aus diesen Elementen verwenden, und zwar mit Operatoren wie +, -,…, COALESCE, IF usw. Der expression kann weder Aliasnamen von Ausdrücken aus der Abfrage des Cursors referenzieren noch Spalten aus anderen Tabellen in der Abfrage des Cursors, die nicht in der UPDATE-Liste enthalten sind. Unterabfrage-Bedingungen, Unterabfrageprädikate oder Aggregatfunktionen dürfen nicht in set-item-Objekten verwendet werden.
Diese Form der UPDATE-Anweisung aktualisiert die aktuelle Zeile des angegebenen Cursors. Die aktuelle Zeile wird als die zuletzt vom Cursor erfolgreich abgerufene Zeile definiert, und der letzte Cursorvorgang darf keine positionsbasierte DELETE-Anweisung gewesen sein.
Bei Syntax 1 entsprechen Spalten aus dem SQLDA oder Werte aus der Hostvariablenliste eins zu eins den vom festgelegten Cursor zurückgegebenen Spalten. Wenn der sqldata-Zeiger im SQLDA der Leerzeiger ist, wird das entsprechende Element der Auswahlliste nicht aktualisiert.
In Syntax 2 werden die angeforderten Spalten auf die angegebenen Werte für die Zeile in der aktuellen Zeile der angegebenen Abfrage gesetzt. Die Spalten müssen nicht in der Auswahlliste des angegebenen und geöffneten Cursors enthalten sein. Dieses Format kann vorbereitet werden.
Wenn eine Variable zugeordnet wird, muss diese bereits deklariert sein und ihr Name muss mit dem At-Zeichen (@) beginnen. Variablen- und Spaltenzuordnungen können gemischt werden, und die Verwendung jeglicher Zahl ist möglich. Wenn in der SET-Liste ein Name auf der linken Seite einer Zuordnung sowohl einer Spalte in der aktualisierten Tabelle als auch einem Variablennamen entspricht, wird die Anweisung die Spalte aktualisieren.
Die Formate USING DESCRIPTOR, FROM hostvar-list und hostvar gelten nur für Embedded SQL.
Sie müssen Eigentümer der zu aktualisierenden Tabelle sein, das UPDATE-Privileg für die zu ändernden Spalten haben oder das UPDATE ANY TABLE-Systemprivileg haben.
Keine.
SQL/2008 Syntax 1 ist eine Erweiterung des Herstellers. Syntax 2 ist eine Kernfunktion des SQL/2008-Standards. Bei Verwendung innerhalb eines Embedded SQL-Programms umfasst Syntax 2 einen Teil der optionalen SQL-Sprachenfunktion B031 (Basic Dynamic SQL). Die Möglichkeit zum Angeben mehrerer zu aktualisierender Tabellen ist eine Erweiterung des Herstellers.
Der Bereich der Cursor, die aktualisiert werden können, ist abhängig von der Einstellung der Option ansi_update_constraints. Die Möglichkeit zum Ausführen eines positionsbasierten UPDATE über einen sortierten Cursor, d.h., die SQL-Abfrage enthält eine ORDER BY-Klausel, umfasst die optionale SQL/2008-Sprachenfunktion F831 (vollständige Cursoraktualisierung). Das Ausführen eines positionsbasierten UPDATE über komplexere SQL-Konstruktionem erfordert möglicherweise zusätzliche Erweiterungen des Herstellers.
Im folgenden Beispiel wird eine UPDATE-Anweisung in einem fiktiven Cursor namens emp_cursor ausgeführt:
UPDATE GROUPO.Employees SET Surname = 'Jones' WHERE CURRENT OF emp_cursor; |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |