UPDATETEXT (Transact-SQL)

Met à jour un champ text, ntext, or image existant. Utilisez UPDATETEXT pour changer seulement une partie d'une colonne text, ntext ou image en place. Utilisez WRITETEXT pour mettre à jour et remplacer un champ text, ntext ou image complet.

Important

Cette fonctionnalité sera supprimée dans une prochaine version de Microsoft SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité. Utilisez au lieu de cela les types de données de valeur élevée et la clause .WRITE de l'instruction UPDATE.

Icône Lien de rubriqueConventions de la syntaxe de Transact-SQL

Syntaxe

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 } ]

Arguments

  • table_name**.**dest_column_name
    Noms de la table et de la colonne text, ntext ou image à mettre à jour. Les noms de tables et de colonnes doivent respecter les règles des identificateurs. La spécification des noms de la base de données et du propriétaire est facultative.

  • dest_text_ptr
    Valeur de pointeur de texte (renvoyée par la fonction TEXTPTR) qui pointe vers les données text, ntext ou image à mettre à jour. dest_text_ptr doit être de type binary(16).

  • insert_offset
    Position de départ de la mise à jour (commence à zéro). Pour les colonnes text ou image, insert_offset correspond au nombre d'octets à ignorer depuis le début de la colonne existante, avant l'insertion de nouvelles données. Pour les colonnes ntext, insert_offsetcorrespond au nombre de caractères (chaque caractère ntext utilise 2 octets). Les données text, ntext ou image existantes commençant à cette position de départ basée sur zéro sont décalées vers la droite pour laisser de l'espace pour les nouvelles données. Une valeur 0 signifie que les nouvelles données seront insérées au début des données existantes. Une valeur NULL signifie que les nouvelles données seront ajoutées à la fin des données existantes.

  • delete_length
    Longueur des données à supprimer de la colonne text, ntext ou image existante, à partir de la position insert_offset. La valeur delete_lengthest définie en octets pour les colonnes text et image, et en nombre de caractères pour les colonnes ntext. Chaque caractère ntext utilise 2 octets. La valeur 0 signifie aucune suppression de données. La valeur NULL supprime toutes les données depuis la position insert_offset jusqu'à la fin de la colonne text ou image existante.

  • WITH LOG
    L'enregistrement dans un journal est déterminé par le mode de récupération en vigueur dans la base de données.

  • inserted_data
    Données à insérer dans la colonne text, ntext ou image existante à l'emplacement insert_offset. Il s'agit d'une valeur unique char, nchar, varchar, nvarchar, binary, varbinary, text, ntext ou image. inserted_data peut être un littéral ou une variable.

  • table_name.src_column_name
    Noms de la table et de la colonne text, ntext ou image utilisée comme source des données insérées. Les noms de tables et de colonnes doivent respecter les règles des identificateurs.

  • src_text_ptr
    Valeur de pointeur de texte (renvoyée par la fonction TEXTPTR) qui pointe vers une colonne text, ntext ou image utilisée comme source des données insérées.

    [!REMARQUE]

    scr_text_ptr et dest_text_ptr ne doivent pas afficher des valeurs identiques.

Notes

Les nouvelles données insérées peuvent correspondre à une constante, un nom de table, un nom de colonne ou un pointeur texte inserted_data unique.

Action de mise à jour

Paramètres UPDATETEXT

Remplacement des données existantes

Définissez une valeur non NULL de insert_offset, une valeur de delete_length différente de zéro et les nouvelles données à insérer.

Suppression des données existantes

Définissez une valeur non NULL de insert_offset et une valeur de delete_length différente de zéro. Ne spécifiez pas de nouvelles données à insérer.

Insertion de nouvelles données

Définissez la valeur de insert_offset, prenez la valeur 0 pour delete_length et spécifiez les nouvelles données à insérer.

Pour optimiser les performances, il est recommandé d'insérer ou de mettre à jour les données text, ntext et image en utilisant des tailles de segment qui sont des multiples de 8 040 octets.

Dans SQL Server, les pointeurs de texte dans la ligne vers les données text, ntext ou image peuvent exister, mais peuvent ne pas être valides. Pour plus d'informations sur l'option text in row, consultez sp_tableoption (Transact-SQL). Pour plus d'information sur l'invalidation des pointeurs de texte, consultez sp_invalidate_textptr (Transact-SQL).

Pour initialiser les colonnes text avec la valeur NULL, utilisez UPDATETEXT lorsque le niveau de compatibilité est égal à 65. Si le niveau de compatibilité est égal à 70, utilisez WRITETEXT pour initialiser les colonnes avec la valeur NULL. Autrement, UPDATETEXT initialise les colonnes text avec une chaîne vide. Pour plus d'informations sur la définition du niveau de compatibilité, consultez sp_dbcmptlevel (Transact-SQL).

Autorisations

Nécessite l'autorisation UPDATE sur la table spécifiée.

Exemple

L'exemple suivant place le pointeur de texte dans la variable locale @ptrval, puis utilise UPDATETEXT pour corriger une faute d'orthographe.

[!REMARQUE]

Pour exécuter cet exemple, vous devez installer la base de données pubs. Pour plus d'informations sur l'installation de la base de donnéespubs, consultez Téléchargement des exemples de bases de données Northwind et 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