UPDATETEXT (Transact-SQL)

Aktualisiert ein vorhandenes text-, ntext- oder image-Feld. Verwenden Sie UPDATETEXT, um nur einen Teil einer vorhandenen text-, ntext- oder image-Spalte zu ändern. Verwenden Sie WRITETEXT, um ein ganzes text-, ntext- oder image-Feld zu aktualisieren und zu ersetzen.

Wichtiger HinweisWichtig

Diese Funktion wird in zukünftigen Versionen von Microsoft SQL Server nicht mehr bereitgestellt. Verwenden Sie diese Funktion beim Entwickeln neuer Anwendungen nicht, und planen Sie das Ändern von Anwendungen, in denen es zurzeit verwendet wird. Verwenden Sie stattdessen die Datentypen für große Werte und die .WRITE-Klausel der UPDATE-Anweisung.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

UPDATETEXT { table_name.dest_column_name dest_text_ptr }
    { NULL | insert_offset }
     { NULL | delete_length }
     [ WITH LOG ]
     [ inserted_data
    | { table_name.src_column_name src_text_ptr } ]

Argumente

  • table_name**.**dest_column_name
    Der Name der Tabelle und der zu aktualisierenden text-, ntext- oder image-Spalte. Tabellen- und Spaltennamen müssen den Regeln für Bezeichner entsprechen. Das Angeben des Datenbank- und des Besitzernamens ist optional.

  • dest_text_ptr
    Ein Textzeigerwert (zurückgegeben von der TEXTPTR-Funktion), der auf die zu aktualisierenden text-, ntext- oder image-Daten verweist. dest_text_ptr muss vom Datentyp binary(16) sein.

  • insert_offset
    Die nullbasierte Startposition für die Aktualisierung. Für text- oder image-Spalten stellt insert_offset die Zahl der ab dem Beginn der vorhandenen Spalte auszulassenden Bytes dar, bevor neue Daten eingefügt werden. Für ntext-Spalten stellt insert_offsetdie Anzahl der Zeichen dar (jedes ntext-Zeichen verwendet 2 Bytes).Die vorhandenen text-, ntext- oder image-Daten, die an dieser nullbasierten Startposition beginnen, werden nach rechts verschoben, um Platz für die neuen Daten zu schaffen. Mit dem Wert 0 werden die neuen Daten am Beginn der vorhandenen Daten eingefügt. Mit dem Wert NULL werden die neuen Daten an den vorhandenen Datenwert angefügt.

  • delete_length
    Die Länge der Daten, die aus der vorhandenen text-, ntext oder image-Spalte gelöscht werden sollen, ausgehend von der insert_offset-Position. Der Wert von delete_lengthwird für text- und image-Spalten in Bytes und für ntext-Spalten in Zeichen angegeben.Jedes ntext-Zeichen belegt 2 Byte. Mit dem Wert 0 werden keine Daten gelöscht. Mit dem Wert NULL werden alle Daten von der insert_offset -Position bis zum Ende der vorhandenen text- oder image-Spalte gelöscht.

  • WITH LOG
    Die Protokollierung wird durch das für die Datenbank wirksame Wiederherstellungsmodell bestimmt.

  • inserted_data
    Die Daten, die der vorhandenen text-, ntext- oder image-Spalte an der insert_offset-Position hinzugefügt werden sollen. Dabei handelt es sich um einen einfachen char-, nchar-, varchar-, nvarchar-, binary-, varbinary-, text-, ntext- oder image-Wert. inserted_data kann ein Literal oder eine Variable sein.

  • table_name.src_column_name
    Der Name der Tabelle und text-, ntext- oder image-Spalte, die als Quelle der eingefügten Daten verwendet wird. Tabellen- und Spaltennamen müssen den Regeln für Bezeichner entsprechen.

  • src_text_ptr
    Ein Textzeigerwert (zurückgegeben von der TEXTPTR-Funktion), der auf eine text-, ntext- oder image-Spalte verweist, die als Quelle der eingefügten Daten verwendet wird.

    HinweisHinweis

    Der Wert scr_text_ptrdarf nicht identisch mit dem Wert dest_text_ptrsein.

Hinweise

Bei neu eingefügten Daten kann es sich um eine einzelne inserted_data-Konstante, einen Tabellennamen, einen Spaltennamen oder einen Textzeiger handeln.

Aktualisierungsaktion

UPDATETEXT-Parameter

Ersetzen vorhandener Daten

Geben Sie einen insert_offset-Wert ungleich NULL, einen delete_length-Wert ungleich 0 (null) und die neuen Daten an, die eingefügt werden sollten.

Löschen vorhandener Daten

Geben Sie einen insert_offset-Wert ungleich NULL und einen delete_length ungleich 0 (null) an. Geben Sie keine neuen einzufügenden Daten an.

Einfügen neuer Dateien

Geben Sie den insert_offset-Wert, einen delete_length-Wert ungleich 0 (null) und die neuen Daten an, die eingefügt werden sollten.

Für optimale Ergebnisse sollten text-, ntext- und image-Daten in Abschnitten eingefügt oder aktualisiert werden, die ein Vielfaches von 8.040 Byte darstellen.

In SQL Server können Textzeiger auf text-, ntext- oder image-Daten in Zeilen vorhanden sein, sind aber möglicherweise nicht gültig. Informationen zur Option text in row finden Sie unter sp_tableoption (Transact-SQL). Informationen dazu, wie Textzeiger ungültig werden, finden Sie unter sp_invalidate_textptr (Transact-SQL).

Verwenden Sie UPDATETEXT zur Initialisierung von text-Spalten mit NULL, wenn der Kompatibilitätsgrad 65 entspricht. Bei einem Kompatibilitätsgrad von 70 verwenden Sie WRITETEXT, um Textspalten mit NULL zu initialisieren; andernfalls initialisiert UPDATETEXT text-Spalten mit einer leeren Zeichenfolge. Weitere Informationen zum Festlegen des Kompatibilitätsgrades finden Sie unter sp_dbcmptlevel (Transact-SQL).

Berechtigungen

Eerfordert die UPDATE-Berechtigung für die angegebene Tabelle.

Beispiele

Im folgenden Beispiel wird der Textzeiger in der lokalen Variablen @ptrval abgelegt. Anschließend wird mit UPDATETEXT ein Rechtschreibfehler aktualisiert.

HinweisHinweis

Um dieses Beispiel auszuführen, müssen Sie die pubs-Datenbank installieren. Informationen zum Installieren der pubs-Datenbank finden Sie unter Herunterladen der Beispieldatenbanken Northwind und pubs.

USE pubs;
GO
ALTER DATABASE pubs SET RECOVERY SIMPLE;
GO
DECLARE @ptrval binary(16);
SELECT @ptrval = TEXTPTR(pr_info) 
   FROM pub_info pr, publishers p
      WHERE p.pub_id = pr.pub_id 
      AND p.pub_name = 'New Moon Books'
UPDATETEXT pub_info.pr_info @ptrval 88 1 'b';
GO
ALTER DATABASE pubs SET RECOVERY FULL;
GO