Bonjour,
j'ai une question qui je pense n'a pas été abordée comme je veux, j'espere trouver une réponse ou plutôt des pistes.
je fais une jointure sur 2 tables
SELECT * FROM T1, T2 WHERE T1.X=T2.Y AND...
j'ai bien besoin de la requête comme ca (pas de jointure LEFT ou RIGHT) après, un curseur boucle dessus pour insérer les résultats dans une table T3. en plus pour des raisons de performances, on veut pas boucler sur T1, en faisant des appels à T2 dans la boucle.
le besoin est de faire ca en plusieurs étapes (ou plutôt en plusieurs intervalles de temps d'exécution), et le but est donc de reprendre à la dernière ligne traitée lors de la dernière exécution. un mécanisme est en place pour stocker le nombre de lignes (de la jointure) traités, et de reprendre à ce nombre lors du traitement suivant.
si la table T2 ne bouge pas entre 2 exécutions, il n'y a pas de souci, par contre le risque est bien présent comme les insertions se font sur des jours d'intervalles. (évidemment T1 reste inchangée pendant tout ce temps)
dans le cas ou T2 bouge, la jointure pourrait ramener soit des lignes en plus soit en moins. et donc la reprise ne se fait probablement pas au bon endroit.
est ce qu'il existe un moyen de réaliser ceci tout en gardant la boucle inchangée, en modifiant juste la requête principale, le but est de reprendre à la dernière ligne de T1 surtout.
le dernier recours est évidemment la boucle sur T1, et l'appel à T2 dedans.
Merci d'avance
Partager