Je vois souvent sur le forum SQL Server l’utilisation de curseurs alors qu’une vraie requête SQL pourrait le remplacer.
Outre le fait que les curseurs datent de COBOL (1956 …), et que leur spécification en COBOL et T-SQL est similaire à s’y méprendre, comparons donc les temps d’exécution entre un curseur et une requête sur un traitement très simple …
Archives mensuelles : août 2009
Pourquoi utiliser les procédures stockées plutôt qu’une commande T-SQL ?
Lorsqu’une application doit exécuter une requête dans une base de données, il est préférable que celle-ci appelle une procédure stockée plutôt que d’envoyer une commande T-SQL construite dans le code de l’application.
Outre l’avantage de sécurité contre les attaques par injection et la maintenabilité du code, voici les autres avantages que cela procure :
Aggréger des données non numériques d’une entité par une liste de valeurs
Il est souvent demandé sur le forum comment on peut créer une liste de valeurs stockées dans une colonne en une liste.
Cela est en effet souvent demandé par le client pour des rapports, mais il n’est pas évident de prime abord de fournir un tel résultat, puisqu’il est anti-relationnel !
Prenons pour exemple des adhérents à plusieurs clubs :
NomContact NomClub --------------- ------------ BipBip SQLServer BipBip Oracle BipBip PostGreSQL Coyotte MySQL Coyotte FireBird Titi Sybase Sylvestre DB2 Sylvestre SQLite Bugs Bunny SQLServer Bugs Bunny PostGreSQL Daffy Duck FireBird Daffy Duck DB2 Sam Le Pirate SQLite
Le résultat recherché se présente sous la forme :
NomContact ListeClub --------------- ----------------------------- Titi Sybase Sam Le Pirate SQLite Daffy Duck FireBird, DB2 Bugs Bunny SQLServer, PostGreSQL Sylvestre DB2, SQLite Coyotte MySQL, FireBird BipBip SQLServer, Oracle, PostGreSQL
Ce qu’il n’est pas possible d’utiliser dans les fonctions T-SQL, et pourquoi
Voici la liste des instructions qu’il n’est pas possible d’utiliser dans un fonction définie par l’utilisateur (UDF) sous SQL Server
Les posters des tables système de SQL Server
Voici 3 liens vers les posters qui présentent les relations entre les objets système de SQL Server 2000 à 2008 …
[SSRS] Encapsulation de rapports dans une petite application WinForms avec Visual Studio 2005
Voyons en plusieurs étapes comment créer une application, avec Visual Studio 2005, qui permette de consulter un rapport conçu avec le ReportBuilder de SSRS, ou bien en le conçevant directement dans Visual Studio …
Options de démarrage du service SQL Server
Il existe plusieurs commutateurs qui permettent de paramétrer le démarrage du service SQL Server.
Comment y accéder ? Quels sont-ils ? Quelles valeurs doivent-ils prendre ?
Lire la suite
[Snippets] Calculer le PGCD de plusieurs nombres
Une internaute a récemment demandé comment on pouvait calculer le PGCD de plusieurs nombres en utilisant T-SQL.
Amateur d’arithmétique, je me réjouissais de ce problème à résoudre.
Voici donc une implémentation de l’arithmétique nécessaire au calcul du PGCD de plusieurs nombres …
Lire la suite
[Utilitaires] Importer et exporter les paramètres de surface d’exposition : l’utilitaire SAC
Il peut être intéressant entre deux installations de SQL Server de se resservir des mêmes paramètres de surface d’exposition, plutôt que de passer un moment dans l’interface graphique proposée.
Heureusement, l’utilitaire en ligne de commande SAC permet d’exporter et d’importer ces paramètres très simplement.
Lire la suite
[Snippets] Génération de nombres pseudo-aléatoires
Un participant au forum SQL Server de ce site a demandé comment on peut générer 10000 nombres entiers positifs aléatoires ne contenant pas de zéros, par une requête T-SQL.
Je connaissais la fonction RAND(), qui suffit dans bien des situations car on n’a pas souvent besoin de générer une série de nombres aléatoires, pourtant celle-ci ne s’est pas prêtée au jeu …