Sur ma machine de test, le temps d’exécution de la requête a été de 53 secondes, dont deux secondes pour générer la sortie. Afin de mesurer le temps d’exécution sans générer la sortie, activez l’option Discard results after execution dans SQL Server Management Studio, sous Tools, Options, Query Results, SQL
CRL ou T-SQL, à chacun sa spécialité (3)
Server, Results to Grid.
Ensuite, examinez la définition de la fonction UDF CLR fn_RegexReplace dans le code C# au niveau du bloc A du listing 3 (ou le code du bloc A du listing 4 pour l’implémentation VB). La définition simple de la fonction UDF accepte trois entrées : input (chaîne en entrée), pattern (expression régulière de modèle à trouver) et replacement (modèle de chaîne de remplacement). La fonction UDF commence par déterminer si une ou plusieurs entrées ont la valeur NULL, auquel cas elle retourne un NULL.
Si aucune valeur NULL n’est identifiée, la fonction UDF appelle simplement la fonction Regex.Replace, qui gère en interne le remplacement chaîne-modèle sur la base d’expressions régulières. Pour des raisons de simplicité, je n’ai pas inclus le code de gestion des erreurs dans les routines de cet article, même si vous le feriez dans le code de production. Une raison pour laquelle cette fonction UDF est nettement plus puissante que la fonction T-SQL est le fait qu’elle supporte les expressions régulières, lesquelles sont polyvalentes.
Malheureusement, la présentation des expressions régulières sort du cadre de cet article, mais il nous suffit de dire que cette fonction UDF peut accomplir beaucoup plus que la fonction T-SQL. Maintenant, testons la fonction en exécutant la requête suivante :
SELECT Phone,
dbo.fn_RegexReplace(Phone, N’%[^0-9a-zA-Z]%’, N ») AS CleanPhone
FROM dbo.Customers;
Cette requête s’est exécutée en moins de 3 secondes sur ma machine de test, dont deux secondes pour générer la sortie. En d’autres termes, elle a été 50 fois plus rapide que la fonction UDF T-SQL.
Procédures stockées
Alors que j’étais sur le point de développer ma propre procédure stockée CLR pour illustrer ce qu’il ne faut pas faire avec du code CLR, je suis tombé sur un exemple parfait dans la documentation en ligne SQL Server 2005. La procédure stockée interroge une table, utilise une boucle pour agréger toutes les valeurs d’une des colonnes de la table et retourne la valeur de résultat dans un paraprocédure stockée d’origine, notamment en dirigeant la requête vers notre table OrderDetails comportant 1 million de lignes et en agrégeant deux colonnes, Quantity et UnitPrice, au lieu d’une seule pour retourner les deux valeurs de résultat en tant que paramètres de sortie. Vous pouvez trouver la définition de la procédure stockée CRL usp_OrderDetailsTotals dans le bloc B du listing 3 pour le code C# (ou dans le bloc B du listing 4 pour le code VB).
Téléchargez cette ressource
![Microsoft 365 : 5 erreurs de sécurité](https://www.itpro.fr/wp-content/uploads/2022/07/Guide-de-Securite-Office-365-les-5-erreurs-a-ne-pas-commettre-Expertise-DIB-France.png)
Microsoft 365 : 5 erreurs de sécurité
A l’heure où les données des solutions Microsoft 365 sont devenues indispensables au bon fonctionnement de l’entreprise, êtes-vous certain de pouvoir compter sur votre plan de sécurité des données et de sauvegarde des identités ? Découvrez le Top 5 des erreurs à ne pas commettre et les meilleures pratiques recommandées par les Experts DIB France.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Stimuler l’innovation durable grâce à la transformation numérique et aux principes ESG
- Retour au bureau avec Copilot M365
- Les entreprises optent pour des solutions durables
- Le rôle clé du no-code/low-code dans la transformation numérique
- Le rôle de l’intelligence Artificielle dans le Cloud Computing
![Revue Smart DSI](https://www.itpro.fr/wp-content/uploads/2024/07/SMART-DSI-Numero-34-Juin-2024.jpg)