Salut a tous,
apres bien longtemps sans trop me faire entendre, je reviens pour poser quelques questions.. je bosse sur du SQL en ce moment, mais je ne suis pas encore familier avec tout ca, notamment MS SQL Server.
Par avance mes excuses si le sujet est traite de facon identique ailleurs, je n'ai rien trouve en FAQ / lien PDF / recherche google (ou presque). J'ai tente de faire un titre aussi clair que possible pour aider ceux qui chercheraient sur google la meme chose que moi...
Passons au sujet. Voila ce que j'ai appris au cours de mes recherches :
Type des fonctions
- Scalar UDF : on renvoie des type de base (entier, varchar...), pratique dans une definition de table pour creer un attribut qui s'informe automatiquement (un peu redondant en volume de donnees mais permet de simplifier ses requetes d'insertion puis de selection - selon moi)
- Inline Table Value UDF : on renvoie une table, alternative aux vues
- Multi Statement UDF : on retourne une table "faite maison", avantage d'une grande flexibilite et complexite face a une vue.
inconvenient fonctions :
- on ne peut pas faire appel a des fonctions indeterministes dans une fonction. on peut passer outre ceci en mettant la fonction indeterministe en parametre d'entree si on en a besoin un nombre fini de fois.
- problemes de performance ? (a confirmer car j'ai juste lue une phrase sans argumentaire)
- probleme des fonctions indeterministes
avantage fonctions :
- on peut faire des calculs sur les parametres d'entree dans la ligne d'apel a la fonction (contrairement a une procedure)
- Plus de possibilites a pas mal de niveaux, notamment des appels tres flexibles (appel dans une clause select, dans une clause from pour les 2 derniers types, dans une definition de table...)
Conclusion
A vrai dire, de ce que j'en ai lu, j'ai limite l'impression que ces fonctions sont vraiment geniales. Eventuellement je vois un petit soucis du cote des getdate() qui limitent a des sections de code pas enorme, mais a part ca...
voila, je suis preneur de toute information complementaire pour confirmer ou infirmer ce que j'ai trouve, en esperant que ca vous inspire (notamment les plus experimentes ^_^), merci d'avance
Partager