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.
Wichtig
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.
Gilt für: SQL Server (SQL Server 2008 bis aktuelle Version). |
Transact-SQL-Syntaxkonventionen
Syntax
UPDATETEXT [BULK] { 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
BULK
Aktiviert Uploadtools, um einen Binärdaten-Datenstrom hochzuladen. Der Datenstrom muss vom Tool auf TDS-Protokollebene bereitgestellt werden. Wenn der Datenstrom nicht vorhanden ist, ignoriert der Abfrageprozessor die BULK-Option.Wichtig
Es wird empfohlen, die BULK-Option nicht in SQL Server-basierten Anwendungen zu verwenden.Diese Option kann in einer zukünftigen Version von SQL Server geändert oder entfernt werden.
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 (von der TEXTPTR-Funktion zurückgegeben), der auf die zu aktualisierenden Daten von text, ntext oder image zeigt. dest_text_ptr muss den Wert binary(16) haben.insert_offset
Die nullbasierte Startposition für das Update. 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. Dies ist ein einzelner Wert vom Datentyp char, nchar, varchar, nvarchar, binary, varbinary, text, ntext oder image. 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.Hinweis
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.
Updateaktion |
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 text in row-Option finden Sie unter sp_tableoption (Transact-SQL). Informationen dazu, wie Textzeiger für ungültig erklärt werden, finden Sie unter sp_invalidate_textptr (Transact-SQL).
Verwenden Sie WRITETEXT, um text-Spalten mit NULL zu initialisieren. UPDATETEXT initialisiert text-Spalten mit einer leeren Zeichenfolge.
Berechtigungen
Erfordert die UPDATE-Berechtigung für die angegebene Tabelle.
Beispiele
Im folgenden Beispiel wird der Textzeiger in die lokale Variable @ptrval eingefügt. Anschließend wird mit UPDATETEXT ein Rechtschreibfehler aktualisiert.
Hinweis
Um dieses Beispiel auszuführen, müssen Sie die pubs-Datenbank installieren.
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