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
PARAM1 et PARAM2 sont des colonnes de MA_TABLE !! IDENTIFIANT aussi qui est la clé primaire.
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
Cette requête marche trés bien (à la fin j'ai (50000 ligne(s) affectée(s)))
en faisantcela marche trés bien et me retourne toutes mes données avec mes calculs qui sont corrects.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Select * from #T order by 1
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)
cette mise à jour classique ne marche pas et j'ai le message d'erreur:
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)
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 tableServeur : 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.![]()
Avez vous des idées ?
![]()








Répondre avec citation






Partager