*SQL dynamique : une solution de contournement pour SELECT SAUF dans le débogage SQL Server**
Bien que SELECT *
soit généralement déconseillé dans le code de production, il peut être utile lors du débogage. Cependant, SQL Server ne propose pas de clause directe « SELECT * EXCEPT ». Cette limitation peut être surmontée grâce au SQL dynamique.
Disons que l'on souhaite récupérer toutes les colonnes de la MY_Table
table sauf la colonne "description". Voici comment procéder avec du SQL dynamique :
<code class="language-sql">DECLARE @sql VARCHAR(8000), @table_id INT, @col_id INT; SET @sql = 'SELECT '; SELECT @table_id = id FROM sysobjects WHERE name = 'MY_Table'; SELECT @col_id = MIN(colid) FROM syscolumns WHERE id = @table_id AND name <> 'description'; WHILE (@col_id IS NOT NULL) BEGIN SELECT @sql = @sql + name FROM syscolumns WHERE id = @table_id AND colid = @col_id; SELECT @col_id = MIN(colid) FROM syscolumns WHERE id = @table_id AND colid > @col_id AND name <> 'description'; IF (@col_id IS NOT NULL) SET @sql = @sql + ','; PRINT @sql; END; SET @sql = @sql + ' FROM MY_table'; EXEC (@sql);</code>
Ce code construit dynamiquement une instruction SELECT
en parcourant les colonnes de la table et en ajoutant uniquement celles qui ne sont pas une « description » à la requête. Cela simule efficacement le comportement "SELECT * EXCEPT" souhaité. Cette approche peut être encapsulée dans une fonction ou une procédure stockée pour être réutilisée. N'oubliez pas que cette méthode est destinée uniquement au débogage dans des environnements hors production en raison de ses limitations inhérentes et de ses considérations de sécurité.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!