Comme vous le savez déjà, depuis SQL Server 2005, Microsoft a mis en place l' utilisation du langage .NET dans SQL Server. Etudions par un simple exemple les performances ? Quand devrons-nous utiliser quand même ce SQLCLR ?
Vous devez être identifié pour poster un commentaire.
Chaque développeur confirmé ou DBA connaît la définition et l' usage du SQL Dynamique mais une personne qui découvre les bases de données ne saura pas nécessairement ce que signifie ce terme surtout que l' aide en ligne de SQL Server ne fournit pas de définition du concept et que très peu d' auteurs ont trouvé utile de préciser ce concept, spécifiquement pour SQL Server, sur le web.
Vous devez être identifié pour poster un commentaire.
Article publié avec l'autorisation de l'auteur sql pro.
Cet article est une solution donnée à un problème de joe selko que j'avais résolu en janvier 2007.
Enoncé : ici
Si vous le souhaitez, vous pouvez vous rendre sur le site de Sql Pro, vous cherchez une solution de votre coté et vous regardez si votre résultat est différent de la solution que je propose.
Vous devez être identifié pour poster un commentaire.
Ce matin, j' étais en discussion avec un prospect, et il me pose la question suivante : savez-vous comment définir un paramètre optionnel pour une SP ?
Ma réponse à froid : tous les paramètres sont obligatoires en .Net mais je place un IF dans la procédure stockée afin que si la valeur soit égale à 0 on n' effectue une requête sans le paramètre.
En fait, il est parfaitement possible d' avoir un paramètre optionnel, c' est à dire que l' on ne déclare pas dans le code ASP.NET. Il suffit d' affecter une valeur par défaut au paramètre de la procédure par exemple
CREATE PROCEDURE ListeSalarie
@Age int = 18
AS
SELECT Nom,Matricule FROM Salarie WHERE Age>@Age;
Par cette procédure, vous pouvez appeler la procédure ListeSalarie sans paramètre pour avoir la liste des salarie supérieur à l' age légal de la majorité.
Par cette procédure, vous pouvez appeler la procédure ListeSalarie avec un paramétre @age pour avoir la liste des salarie supérieur à cette @age donné.
Vous devez être identifié pour poster un commentaire.
Un exercice assez simple de sql pour sql serveur 2000.
Enonce :Problème n° 4 - les chambres libres
Solution :
Vous devez être identifié pour poster un commentaire.
( Première Partie ) Problème N°2 Le publipostage.
J'avais résolu ce problème d'une façon élégante à l'aide des CTE sous SQL Serveur 2005.
Aujourd'hui, je vous livre la solution classique, pour sql serveur 2000.
Vous devez être identifié pour poster un commentaire.
Concours : http://sqlpro.developpez.com/Exercices/Index.html
Enoncé : http://sqlpro.developpez.com/Exercices/SQL_AZ_P4.html
Solution : voir ci dessous.
Indice : il s'agit d'un nouveau problème à base de CTE.
Vous devez être identifié pour poster un commentaire.
Je vous encourage à répondre aux nombreux problèmes proposés par sql pro en sql : ici
Aujourd'hui, je vous propose de résoudre un problème par application des fonctions de fenêtrage et de ranking, nouvelle fonctionnalité de sql serveur 2005, dans le but de numéroter des lignes lors d'un SELECT.
Problème : http://sqlpro.developpez.com/Exercices/SQL_AZ_P1.html - Problème n° 7 - le comptage.
Solution :
Vous devez être identifié pour poster un commentaire.
Comme la date des résultats est dépassée et que je pense que le concours reste à titre pédagogique, je me permet de publier quelques résultats qui peuvent vous instruire.
Aujourd'hui, utilisation des CTE pour multiplie une ligne.
( Première Partie ) Problème N°2 Le publipostage. Pour info, j'ai cherche un moment comment multiplier des données avant de comprendre que c'était les CTE la solution.
Réponse :
Vous devez être identifié pour poster un commentaire.
Bonjour,
Samedi, en me promenant sur le site GUSS, il m'a été démontré une technique remarquable : l'utilisation des CTE pour générer une table. Notez l'option MAXRECURSION qui permet de dépasser 100 récursions par défaut. Encore une utilisation magnifique des CTE sur SQL Serveur 2005. A rapprochez de l'article sur GO [count]!
WITH CTETemps AS
(
SELECT cast('1990-01-01' AS datetime) Date
UNION ALL
SELECT Date + 1
FROM CTETemps
WHERE Date + 1 < '2031-01-01'
)
SELECT top 10 * FROM CTETEMPS ORDER BY Date desc OPTION (MAXRECURSION 0);
Vous devez être identifié pour poster un commentaire.
cette commande sql serveur non transact sql, mais reconnu par le manager et sqlcmd et osql offre des possibilités alors insoupconnées en SQL. Attention! Toad ne l'accepte pas!
lien msdn : http://msdn2.microsoft.com/en-us/library/ms188037.aspx
Vous devez être identifié pour poster un commentaire.
En SQL ANSI, il est connu qu'une vue ne doit jamais être trié. On n'utilise donc jamais de ORDER BY dans une vue.
J'avoue que j'ai essayé de trouver une bon raison à cela et je l'ai finalement trouvé...
Comme vous le savez, une vue n'est qu'un enregistrement de requête, elle n'a pas d'existence physique comme une table à part les vues matérialisées mais c'est un autre problème!
Imaginez le scénario suivant :
Vous créez sur sql serveur une vue avec un order by. SQL Serveur 2000 ne posera aucune question et conservera le tri en réserve comme vous le souhaitez.
CREATE VIEW MAVUE AS SELECT NOM,PRENOM FROM FAMILLE ORDER BY NOM,PRENOM;
Jérome, votre collègue de toujours à besoin de cette vue mais lui, il veut trié par PRENOM,NOM...il écrit donc sa requète :
SELECT * FROM MAVUE ORDER BY PRENOM,NOM;
Jérome a le droit d'écrire cela.
Maintenant, Qu'avez vous demander à SQL SERVEUR 2000 ?
Il doit trier par NOM,PRENOM puis par PRENOM,NOM dans la même requête, avouez que c'est fort en chocolat de demander cela.
Voilà, pour moi, la raison pratique pour laquelle on ne doit jamais écrire un order by dans une vue. Parce qu'il y a aura 10 utilisateurs différents de la vue et qu'aucun d'eux n'aura les mêmes besoins. Alors même si sql serveur 2000 autorise le order by dans une vue, ne l'utilisez jamais dans la vue mais en dehors, au plus prés du besoin!
Vous devez être identifié pour poster un commentaire.
Modélisation, Sécurisation, Développement, Interrogation de la base SQL Server.
Copyright © 2007-2008
| Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Copyright © 2000-2012 - www.developpez.com