Mit dieser Anweisung ändern Sie die Daten an der aktuellen Cursorposition.
UPDATE WHERE CURRENT OF Cursorname { USING DESCRIPTOR SQLDA-Name | FROM Hostvariablenliste }
UPDATE Aktualisierungstabelle, ... SET Mengenelement, ... WHERE CURRENT OF Cursorname
Hostvariablenliste : Indikator-Variable sind erlaubt
Aktualisierungstabelle :
[Eigentümer-Name.]Objektname [ [ AS ] Korrelationsname ]
Mengenelement : [ Korrelationsname.]Spaltenname = { Ausdruck | DEFAULT } | [Eigentümername.]Objektname.Spaltenname = { Ausdruck | DEFAULT }
Objektname : Bezeichner (Tabellen- oder Ansichtname)
SQLDA-Name : Bezeichner
USING DESCRIPTOR-Klausel Bei Zuordnung einer Variablen muss diese bereits deklariert sein und ihr Name muss mit dem Klammeraffen (@) 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.
SET-Klausel Die in Mengenelement referenzierten Spalten müssen sich in der aktualisierten Tabelle oder Ansicht befinden. Sie können sich weder auf Aliasnamen noch auf Spalten aus anderen Tabellen oder Ansichten beziehen. Wenn einer Tabelle oder Ansicht, die Sie aktualisieren, in der Cursorspezifikation ein Korrelationsname gegeben wird, müssen Sie diesen Korrelationsnamen in der SET-Klausel verwenden.
Jedes Mengenelement ist einer einzigen Aktualisierungstabelle zugeordnet, und die entsprechende Spalte der passenden Tabelle in der Cursorabfrage wird geändert. Der Ausdruck referenziert Spalten der Tabellen, die in der UPDATE-Liste enthalten sind und kann Konstante, Variable, Ausdrücke aus der Auswahlliste der Abfrage oder Kombinationen davon verwenden, und zwar mit den Operatoren +, -,…, COALESCE, IF usw. Der Ausdruck darf keine Aliasnamen von Ausdrücken in der Abfrage des Cursors und auch keine Spalten von anderen Tabellen in der Abfrage des Cursors referenzieren, die nicht in der UPDATE-List enthalten sind. Aggregatfunktionen, Unterabfrageprädikate oder Aggregatfunktionen dürfen nicht in Mengenelemente verwendet werden.
Jede Aktualisierungstabelle 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 Tabellen-/Ansichtsname- und denselben Korrelationsname-Parameter hat.
Wenn es hingegen eine Tabelle in der Abfrage des Cursors gibt, die denselben Tabellen-/Ansichtsname-Parameter, aber keinen Korrelationsnamen angegeben hat, oder einen Korrelationsnamen hat, der derselbe wie Tabellen-/Ansichtsname ist, dann wird die Aktualisierungstabelle mit dieser Tabelle in der Abfrage des Cursors verglichen.
Wenn es allerdings eine einzige Tabelle in der Abfrage des Cursors gibt, die denselben Tabellenname- oder Ansichtsnamen-Parameter wie die Aktualisierungstabelle hat, wird die Aktualisierungstabelle mit dieser Tabelle in der Abfrage des Cursors verglichen.
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 mit den Beispielen für UPDATE-Anweisung.
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 Klammeraffen (@) 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 Hostvariablenliste und Hostvariable gelten nur für Embedded SQL.
UPDATE-Berechtigung für die zu ändernden Spalten ist erforderlich
Keine.
SQL/2003 Kernfunktion. Der Bereich der aktualisierbaren Cursors kann Erweiterungen des Herstellers enthalten, wenn die Option ansi_update_constraints auf OFF gesetzt ist.
Sybase Die Verwendung in Embedded SQL wird von Open Client/Open Server unterstützt, und die Verwendung von Prozeduren und Triggern wird von SQL Anywhere unterstützt.
Nachfolgend wird ein Beispiel für eine UPDATE-Anweisung und einen WHERE CURRENT OF-Cursor gezeigt:
UPDATE Employees SET Surname = 'Jones' WHERE CURRENT OF emp_cursor; |
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 |