[Outils] APEX SQL Refactor

Arnaud Lepicier - 03/06/2019 à 22:02:180 commentaire

APEX SQL Refactor



Pourquoi formater son code SQL ?


Durant les années ou j’ai pu travailler dans les bases de données, j’ai pu remarquer que le challenge n’est pas de bien formater son code SQL (ou d’apprendre les autres à le faire) … mais bien d’avoir un standard adopté par tous.

C’est pourquoi les outils pour formater le code SQL sont quasiment des « must have » dans une équipe projet que ce soit pour les DBA ou les développeurs.

Les DBA/Développeurs SQL définisse les standards (en se référents aux standards SQL) et peuvent facilement les faire appliquer aux autres utilisateurs.



Pourquoi Apex ?


-       Gratuit (le DBA est pauvre et le client aussi)

-       Création et partage de profiles

-       Customisation très poussée

-       Prévisualisation du formatage dans les options



Installation


APEX Refactor permet une intégration à Visual Studio ainsi qu’à Microsoft SQL Server Management Studio.

Téléchargement à partir de : https://www.apexsql.com/Download.aspx

=> APEX SQL Refactor

Pendant l’installation vous êtes invités à choisir à quel programme APEX Refactor va être intégré :




Principales fonctions :


Pour l’exemple je vais prendre les menus d’APEX refactor intégrés à SSMS.




           Menu principal 



           Profiles


APEX SQL Refactor prend en charge la création, la customisation, la suppression ainsi que le partage de profils pour formater votre code SQL. Il vous permettra d’uniformiser le code SQL au sein d’une équipe voire d’une organisation.


           Options :



APEX SQL Refactor permets de prévisualiser le formatage qui sera appliqué avec les options définies.


Les différents menus:



                       Formatting

=> indentation, management des espaces, management des lignes vides


                       Capitalization

=> forcer les majuscules ou minuscules sur certaines données


                       Comments

=> Visuel des commentaires


                       Statements

=> indentation et alignement des clauses, des requêtes imbriquées, des définitions d’objets ainsi que des alias.


                       Lists

=> formatage des listes (variables , clause WHERE etc…)


                       Expressions

=> formatage des expressions (logiques , comparaisons, etc…)


                       Joins

                                  => formatage des JOIN


                       Flow control

                                  => formatage des CASE WHEN et BEGIN END


                       Obfuscation

                                  => formatage pour rendre le code moins lisible

                       

                       Shortcuts

                                  => definition des raccourcis



    Encapsulation



Une fonction qui peut être très utile pour de l’industrialisation de certaines requêtes souvent utilisées : l’encapsulation.

Un bloc de code SQL standard peut être transformé en une procédure, une vue, une fonction scalaire ou une fonction table.

La fonction est directement utilisable via le sous-menu : « encapsulate code as »



Qualify object names


Une autre fonction intéressante qui sera utilisée pour ajouter le schéma ou l’alias dans les requêtes comme l’exemple ci-dessous :

Requête :

SELECT Name FROM HumanResources.Department t1

WHERE Name LIKE '%'

 

Après formatage:

SELECT t1.Name FROM HumanResources.Department t1
WHERE t1.Name LIKE '%'

 

La fonction est disponible dans le menu principal : « qualify object name ».



           Copie du code SQL dans un autre langage


La fonction « copy code as » dans le menu principal permet de copier un code SQL

Si on prend comme exemple le code suivant :

CREATE TABLE ApexSQLDocs
(
  DocID INT NOT NULL IDENTITY,
  DocTitle NVARCHAR(50) NOT NULL,
  DocFileName NVARCHAR(400) NOT NULL,
 CONSTRAINT PK_ApexDocs_DocID PRIMARY KEY CLUSTERED (DocID ASC)
)
GO


Copy code as Java va donner :

String sql = "CREATE TABLE ApexSQLDocsn"
           + "(n"
           + "  DocID INT NOT NULL IDENTITY,n"
           + "  DocTitle NVARCHAR(50) NOT NULL,n"
           + "  DocFileName NVARCHAR(400) NOT NULL,n"
           + "  CONSTRAINT PK_ApexDocs_DocID PRIMARY KEY CLUSTERED (DocID ASC)n"
           + ")n"
           + "GO";

Copy code as PHP va donner :

$sql = "CREATE TABLE ApexSQLDocs\n"
     . "(\n"
     . "  DocID INT NOT NULL IDENTITY,\n"
     . "  DocTitle NVARCHAR(50) NOT NULL,\n"
     . "  DocFileName NVARCHAR(400) NOT NULL,\n"
     . "  CONSTRAINT PK_ApexSQLDocs_DocID PRIMARY KEY CLUSTERED (DocID ASC)\n"
     . ")\n"
     . "GO";



Autres fonctions 


Dans les autres fonctions moins utilisées on peut citer la fonction de suppression des variables et paramètres non utilisés et la fonction de séparation d’une table en deux tables distinctes qui pourraient trouver un usage.





....Plus d’excuses pour du code SQL mal formaté !



Commentaires :

Aucun commentaires pour le moment


Laissez un commentaire :

Réalisé par
Expaceo