• [^] # Re: Oui mais Oracle n'est pas un moteur SQL...

    Posté par . En réponse à la dépêche Migrer de Oracle à PostgreSQL : Ora2Pg. Évalué à 2.

    Plus

    La syntaxe oracle avec un '+', j'ai toujours trouvé ça dégueulasse (en plus du fait qu'elle n'est pas portable car pas standardisée) pour (au moins) une raison : on se retrouve à devoir mélanger les jointures et les filtres dans la clause WHERE !

    En fait, c'est pire : selon que le (+) est attaché aux colonnes d'une table ou d'une autre, il va s'agir d'un left outer join ou d'un right outer join (détails ici, et plus bas pour savoir pourquoi ce "bidule" existe).

    Tu as peut-être du code qui date un peu, non ?

    • La notation SQL standard existe depuis la 9i sortie en 2001.
    • Tu peux jeter un oeil à "alter session set flagger = xxx" (jamais utilisé à titre perso) : ça existe depuis au moins la 9i et cela génère une erreur à chaque instruction SQL qui n'est pas conforme SQL92 (un exemple ici).
    • Cela ne va pas re-écrire tes requêtes magiquement, mais ça peut en faciliter l'inventaire avant d'envisager un portage par exemple (ou une modernisation du code).

    Pour ce qui est de l'ancienne notation (+) qui n'est pas standardisée, il y a une "histoire" derrière : cette notation fut introduite par Oracle sur la 8 avant que cette fonctionnalité ne soit standardisée (chercher "outer join" par exemple ici).

    Standard ? Quel standard ?

    Puisqu'on parle de standard, c'est d'ailleurs un sujet passionnant que celui du standard SQL (enfin, "passionnant", ça peut aussi signifier "utile pour passer une longue soirée d'hiver au coin du feu", à chacun de se faire son idée) :

    • Il en existe en fait plusieurs sous-catégories. Le début de cette question explique un peu la chose (attention, ça date un peu : 2001, donc le reste de cette discussion est à lire - par défaut - avec distance). L'intro de cette documentation postgres en parle également, de manière plus détaillée et surtout plus récente.
    • Et, à ma connaissance, il n'existe plus aucun organisme indépendant capable de certifier qu'un moteur est conforme ou pas au standard (chercher "Summary and Conclusions" vers la fin de cet article par exemple).

    C'est donc plutôt une mauvaise nouvelle car, en pratique, cela signifie qu'il n'existe plus de standard. On ne peut que se reposer sur ce qu'affirment les éditeurs de moteurs SQL et leur faire confiance.

    Quelqu'un est-il assez calé en standard SQL pour contre-dire ce que j'ai écrit sur cet aspect "certification" ?

    Cordialement.