SQL Server : Ne rien renvoyer depuis une requête ou uniquement des métadonnées
Vous pourrez suivre le premier épisode du sujet :
http://blogs.codes-sources.com/christian/archive/2007/03/05/sql-server-la-meilleure-mani-re-de-rien-renvoyer.aspx
En fait en faisant un WHERE 1 = 0 ou mieux un TOP 0 le moteur nous renvoie aucunes données ce qui permet de réaliser une copie de la structure seule d'une table ou plus compliqué de lister les champs renvoyés.
Il y a une autre méthode encore plus efficace qui s'applique aussi aux procédures stockées :
SET FMTONLY ON
SELECT * FROM syscolumns
exec sp_help 'syscolumns'
SET FMTONLY OFF
Tout ce qui se trouve entre le ON et le OFF renvoie uniquement des métadonnées. Attention il y a quelques effets de bord, la requête n'est pas exécutée, donc le moteur renvoie tout ce qui lui passe sous la main dans la procédure stockée et c'est pourquoi il renverra des erreurs pour les tables temporaires par exemples qui n'ont pu être créée.
Pratique donc, mais dans certains cas uniquement. Pour une fois je regrette les syntaxes des moteurs de base de données concurrent, dont certains permettent très facilement l'obtention des métadonnées depuis une requête quelconque.
Bonne requête. . .
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :