Bonjour,
J'ai une fonction utilisateur récursive (plus de 300 lignes) écrite en PL/SQL que je devrais l'implémenter en T-SQL. Cette fonction accède à plusieurs tables volumineuses pour effectuer les calculs nécessaires ; le problème de performances se pose donc. Dans ma table initiale, je dispose de plus de 4 millions de triplets (A, B, C) distincts. Je ne pourrai donc mettre en place cette UDF en T-SQL et l'appeler 4 millions fois ! Je souhaite donc découper les traitements dans des tables temporaires étant donné que la fonction comprend une multitude de branchements conditionnels. Dans les deux blocs principaux, il y a un branchement qui fait un appel récursif avec des valeurs différentes pour les paramètres 3 à 8.
Auriez-vous une idée sur la manière d'implémenter la partie récursive de la fonction utilisateur ?
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 CREATE OR REPLACE FUNCTION XXX_USER.F_MONTANT (A, B, C, 'N', 'N', 'N', 'N', 'N') RETURN NUMBER IS BEGIN IF -- Bloc 1 ... RETURN(F_MONTANT(A, B, C-1, 'O', 'O', 'O', 'O', 'O')); ELSE -- Bloc 2 ... RETURN(F_MONTANT(A, B, C-1, 'O', 'O', 'O' 'O', 'O')); END IF; RETURN (MNT); END F_MONTANT; /
Merci d'avance pour vos conseils.
Partager