Bonjour,
Dans le cade de récupération de données d'une base vers une autre, j'ai créé une table de mappage des Devises entre ceux de la base source et ceux de la base cible,
la valeur retourné est une seule valeur donc je peux la faire via une fonction scalaire
et l'appel sera :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 CREATE FUNCTION udf_scal_Devise (@SD_No INT, @SO_ID INT ) RETURNS INT AS BEGIN RETURN ( SELECT DV_Id FROM P_SOCIETEDEVISE sd WHERE sd.SD_No = @SD_No AND sd.SO_Id = @SO_Id ); END;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT dbo.udf_scal_Devise(r.N_Devise + 1, 1) as DV_ID, r.RG_No, r.CT_NumPayeur, r.RG_Montant FROM BIJOU.dbo.F_CREGLEMENT r;
Est ce que passer par une fonction table sera plus performant plus que le scalaire ?
NB : j'ai évité de passer par une jointure puisque la base source peut avoir plusieurs format (parfois une base ERP et parfois des fichiers plats) donc je pense que déjà par une fonction rend mon code plus générique et réutilisable
Partager