Bonjour,

Je suis sous SQL Server 2000. J'ai une fonction SQL Server qui me fait des calculs pour chaque ligne et qui me retourne l'id de la ligne ainsi que le calcul fait, je stoque le tout dans une table temporaire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
SELECT IDENTIFIANT, dbo.MA_FONCTION(PARAM1, PARAM2) AS SchemaCompta
INTO #T
from MA_TABLE
PARAM1 et PARAM2 sont des colonnes de MA_TABLE !! IDENTIFIANT aussi qui est la clé primaire.
Cette requête marche trés bien (à la fin j'ai (50000 ligne(s) affectée(s)))
en faisant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
Select * from #T
order by 1
cela marche trés bien et me retourne toutes mes données avec mes calculs qui sont corrects.
Maintenant, je dois faire une mise à jour dans MA_TABLE de ce champs calculé (qui est calculé à partir d'autre paramètres qui sont dans la même table si vous avez bien suivi)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
UPDATE MA_TABLE
SET MA_TABLE.CHAMPS_CALCULE = #T.SchemaCompta
FROM MA_TABLE INNER JOIN #T
ON (MA_TABLE.IDENTIFIANT = #T.IDENTIFIANT)
cette mise à jour classique ne marche pas et j'ai le message d'erreur:
Serveur : Msg 8152, Niveau 16, État 4, Ligne 5
Les données chaîne ou binaires seront tronquées.
L'instruction a été arrêtée.
sachant que ceci marche trés bien si je travaille sur 1000 ou 2000 lignes par exemple !! cela ne plante que sur plus que 10000 lignes de ma table

Avez vous des idées ?