Bonjour a tous,
j'effectue actuellement des tests en local sur une base MSDE, avant d'attaquer la base SQL server. Je dois mettre a jour des champs le plus simplement du monde.
Note: le datatype de descriptif est text
UPDATE Organisme SET descriptif = (SELECT descriptif FROM Organisme WHERE Sigle='Nom1') WHERE Sigle Like 'Nom%'
Souci, cette requete me renvoit l'erreur suivante: Les types de donnees text, ntext et image sont incorrects dans cette sous requete ou cette expression d'agregation.
Par contre le select seul fonctionne.
Du coup, croyant que c'etait le select au sein de la requete qui posait probleme, je me suis dis que j'allais passe par un script:
1 2 3 4
| DECLARE @descript text
SET @descript = 'descript'
UPDATE Organisme SET descriptif = descrip WHERE Sigle Like 'DDASS%' |
Et cette fois j'ai l'erreur: Les types de donnes text, ntext et image sont interdits dans les variables locales.
Super! Apres recherche sur le net voila ce que j'ai trouve sur http://vyaskn.tripod.com/coding_conventions.htm :
Try not to use text, ntext datatypes for storing large textual data. 'text' datatype has some inherent problems associated with it. You can not directly write, update text data using INSERT, UPDATE statements (You have to use special statements like READTEXT, WRITETEXT and UPDATETEXT). There are a lot of bugs associated with replicating tables containing text columns. So, if you don't have to store more than 8 KB of text, use char(8000) or varchar(8000)datatypes.
Bien sur les commandes UPDATETEXT et READTEXT ne fonctionnent pas.
Bon je me suis dis que j'allais faire ca a la barbare en rentrant le texte a modifier entre " "; malheureusement le texte est trop long (a priori limite a 128 caracteres) et je ne peux pas le faire comme ca.
C'est quoi que je dois donc faire? Si quelqu'un a une idee avant que je m'attaque au developpement d'une appli qui le fera.
Merci.
Partager