Bonjour,
Je travaille actuellement sur SQL SERVER 2000 et j'ai un petit souci concernant une automatisation d'Update.
Voilà le topo :
J'ai une table T1 dans laquelle j'ai un champ C, et une autre table T2 dans laquelle j'ai un champ A et B.
T1 contient 700 000 lignes , T2 100 lignes.
Le but est de remplir TOUS les champs C de T1 dans l'ordre qu'ils se presentent avec les champs A de la table T2.
Le champ B de T2 indique le nombre d'éléments A qu'il faut placer dans les champs C de T1.
Donc dans T2 on a un truc du style
A B
01 2000
02 4000
03 1500
ce qui signifie qu'il faut placer dans le champ C de T1 l'élément 01 sur les 2000premières lignes, puis l'element 02 sur les 4000 lignes suivantes etc...
Mon problème est que je n'ai pas trouve de solutions satisfaisantes pour executer ce traitement, comme le traitement est finalement tres iteratif j'ai utilise des cursors avec update dans une procedure stockée mais cela prend vraiment trop de temps a l'execution. Idem dans une procedure VB.
Et je n'ai pas reussi a encapsuler le traitement dans des requetes SQL, car le SQL se prete peu à ce genre de traitement iteratif, là il s'agit de "poser" des données ligne à ligne jusqu'à la fin.
En plus sur sql server 2000 il n'y a pas de fonction qui renvoie le numero de ligne d'une table, c'est bien dommage car là j'aurais pu updater les 2000 premieres lignes d'un coup puis les 4000 suivantes etc... etc...
Bref... je me demande s'il y a moyen de faire ce genre de traitement sans qu'il prenne 2 heures à l'execution.
Merci par avance.
Partager