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: |
---|
Dieses Feature wird in einer zukünftigen Version von Microsoft SQL Server entfernt. Verwenden Sie dieses Feature 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. |
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 Byte). 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 Byte 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
Wird in SQL Server 2000 ignoriert. In SQL Server 2005 wird die Protokollierung von dem für die Datenbank geltenden 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.
Hinweis: |
---|
Der Wert von scr_text_ptrdarf nicht identisch sein mit dem Wert von dest_text_ptr. |
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 Null und die neuen einzufügenden Daten an. |
Löschen vorhandener Daten |
Geben Sie einen insert_offset-Wert ungleich NULL und einen delete_length-Wert ungleich Null an. Geben Sie keine neuen einzufügenden Daten an. |
Einfügen neuer Dateien |
Geben Sie den insert_offset-Wert, einen delete_length-Wert von 0 und die neuen einzufügenden Daten an. |
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.
Hinweis: |
---|
Um dieses Beispiel auszuführen, müssen Sie die pubs-Datenbank installieren. Informationen zum Installieren der pubs-Datenbank finden Sie unter Downloaden 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
Siehe auch
Verweis
READTEXT (Transact-SQL)
TEXTPTR (Transact-SQL)
WRITETEXT (Transact-SQL)
Andere Ressourcen
Verwenden von Datentypen mit umfangreichen Werten