Le Post Infeeny

Les articles des consultants et experts Infeeny

[70-461] Querying Microsoft SQL Server 2012 – Avril 2014

Suite au passage de la certification 70-461 « Querying Microsoft SQL Server », voici mon compte rendu.

Concernant le contenu de l’examen c’est la même chose que ce qu’on dit mes collègues. Pour ne pas faire doublon je vous renvoie vers leurs posts :

 

Les questions m’ayant posées le plus de problèmes sont celles portant sur la différence entre une procédure stockée et une UDF (User-Defined Function).

L’UDF et les procédures stockées sont toutes deux des objets SQL Server qui stockent une ou plusieurs instructions T-SQL sous un seul nom, prenant la forme d’une routine exécutable. Même si vous pouvez mettre en œuvre la même fonctionnalité ou une similaire en utilisant soit une UDF ou soit une procédure stockée, le code sera significativement différent selon la technique que vous choisissez.

Les avantages de l’utilisation des procédures stockées ou des fonctions sont les suivants :

  • Vous pouvez créer la procédure ou la fonction une fois, la stocker dans la base de données et l’appeler autant de fois que vous le voulez dans votre programme.
  • Les procédures stockées et les fonctions Transact-SQL définies par l’utilisateur réduisent le coût de compilation du code Transact-SQL en mettant en cache les plans pour les réutiliser au cours d’exécutions répétées. Elles n’ont donc pas besoin d’être ré-analysées et ré-optimisées à chaque utilisation, ce qui réduit nettement les durées d’exécution.
  • Les commandes d’une procédure ou d’une fonction sont exécutées comme un seul lot de codes. Cela peut réduire considérablement le trafic réseau entre le serveur et le client, car seul l’appel pour exécuter la procédure ou la fonction est envoyé sur le réseau.

 

Voici les principales différences entre les fonctions et les procédures stockées :

  • Une UDF doit renvoyer un seul et unique jeu de résultat. Une procédure stockée peut quant à elle retourner une valeur ou même plusieurs jeux de résultats ou voir même ne rien retourner du tout.
  • Vous pouvez utiliser une UDF directement dans une instruction SELECT ainsi que dans les clauses ORDER BY , WHERE ou FROM, tandis que vous ne pouvez pas utiliser une procédure stockée dans une instruction SELECT.
  • Une UDF ne peut pas utiliser une fonction non déterministe (qui retourne un résultat différent avec les mêmes paramètres d’entrée) comme GETDATE(), NEWID(), ou RAND(), alors qu’une procédure stockée peut utiliser ces fonctions.
  • Une UDF ne peut pas modifier les variables d’environnement du serveur; une procédure stockée peut .
  • Une UDF arrête toujours exécution du code en cas d’erreur, alors qu’avec une procédure stockée on peut continuer à l’instruction suivante en utilisant le code de gestion d’erreur approprié.
  • Une UDF peut être appelée à partir de procédure alors qu’une procédure ne peut pas être appelée à partir de l’UDF.
  • Une procédure ne peut pas être utilisée dans une instruction SELECT alors qu’une fonction peut être intégrée dans une instruction SELECT.

 

Il existe plusieurs types de fonctions définies par l’utilisateur :

  • Fonction scalaire :Les fonctions scalaires définies par l’utilisateur retournent une valeur de donnée unique dont le type est défini dans la clause RETURNS. Une fonction scalaire incluse ne contient pas de corps ; la valeur scalaire est le résultat d’une instruction unique. Le corps d’une fonction scalaire à instructions multiples, défini dans un bloc BEGIN…END, contient une série d’instructions Transact-SQL qui retournent la valeur unique. Le type de retour peut être n’importe quel type de données à l’exception de text, ntext, image, cursor et timestamp.
  • Fonctions tableLes fonctions table définies par l’utilisateur retournent un type de données table. Une fonction table incluse ne contient pas de corps ; la table est le jeu de résultats d’une instruction SELECT unique.
  • Fonctions inlineLes fonctions définies par l’utilisateur inline sont un sous-ensemble de fonctions définies par l’utilisateur qui retournent un type de données table. Les fonctions inline peuvent offrir une fonctionnalité équivalente à celle des vues paramétrées.
  • Fonctions systèmeSQL Server fournit de nombreuses fonctions système que vous pouvez utiliser pour effectuer diverses opérations. Elles ne peuvent pas être modifiées.

 

 

 

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :