> Tech > Une expression très puissante

Une expression très puissante

Tech - Par iTPro - Publié le 24 juin 2010
email

On l’a vu, l’expression Row_Numberpermet d’attribuer un identificateur. Mais elle peut aussi servir pour traiter simplement  un sous-ensemble ou un jeu de résultats. Dans l’exemple de la figure 8, l’expression Row_Number est associée à une expression

de table courante(CTE, common table expression) (c’est-à-dire, la clause WITH ) pour renvoyer (en figure 9) uniquement un sous Ensemble des employés provenant de l’exemple précédent.

Si vous rencontrez une CTE (common table expression) pour la première fois, considérez qu’il s’agit de créer une vue SQL temporaire qui ne sera utilisée que par l’instruction SELECT associée. L’expression numbering table attribue un identificateur à chaque employé, puis l’instruction SELECT spécifie la suite ou l’ensemble des employés à retourner. Les valeurs constantes de cette instruction, 6 et 10, pourraient bien sûr être remplacées par des marqueurs de paramètres ou des variables d’hôtes, afin que l’application puisse utiliser cette instruction pour feuilleter ou saisir un sous-ensemble différent de résultats en utilisant la même requête. Peut-être pensez-vous que cette instruction est exagérément complexe avec les CTE numbering, et que l’expression de table pourrait être abandonnée de manière à produire une version plus dépouillée : SELECT ROW_NUMBER() OVER (ORDER BY workdept, lastname) AS rowno, lastname, salary, workdept FROM emp WHERE rowno BETWEEN 6 AND 10 ORDER BY workdept, lastname

Malheureusement, cela n’est pas permis par le standard SQL parce que la clause WHERE est traitée avant les expressions de la liste SELECT. Par conséquent, la référence rowno (numéro de ligne) sur la clause WHERE sera marquée comme une clause indéfinie parce que l’analyseur syntaxique (parser) DB2 SQL n’a pas traité l’expression rowno définie sur la liste SELECT.

Dans la figure 8, une CTE (c’est-àdire la clause WITH ) est utilisée pour définir rowno avant l’instruction SELECT principale. On voit donc que les CTE sont très utiles quand on veut réutiliser des calculs ou des expressions complexes sur des clauses différentes d’une même instruction SQL. Autre possibilité : incorporer le Row_Number dans une vue SQL, mais au prix de deux instructions SQL séparées.

 

 

Téléchargez cette ressource

En route vers RISE with SAP et Atos

En route vers RISE with SAP et Atos

Quels bénéfices associer à l’adoption de l'ERP Cloud de SAP ? Fort de la migration réussie de leur SI vers l’ERP Cloud de SAP, les experts Atos ont élaboré un guide spécialement conçu pour les décideurs IT et métiers afin de leur permettre d’évaluer précisément les avantages tangibles associés au déploiement Cloud Rise with SAP.

Tech - Par iTPro - Publié le 24 juin 2010