57 votes

Pouvez-vous tout SÉLECTIONNER, sauf 1 ou 2 champs, sans crampe d'écrivain ?

Est-il possible, en PLSQL, de sélectionner tous les champs d'une table sauf 1 ou 2, sans avoir à spécifier les champs que l'on veut ?

Exemple, la table des employés a les champs :

  • identifiant
  • prénom
  • nom de famille
  • passe-temps

Est-il encore possible d'écrire une requête similaire à

 select * from employee

en quittant le champ hobbies sans avoir à écrire quelque chose comme ça ?

 select id, firstname, lastname from employee

54voto

Yahia Points 49011

41voto

Michael Fredrickson Points 24359

Si vous voulez éviter les crampes de l'écrivain, vous pouvez utiliser SQL Developer et lui faire générer la liste des colonnes pour vous :

 select column_name||','
from all_tab_columns
where table_name = 'YourTableName'

Et puis enlevez simplement la ou les deux colonnes dont vous ne voulez pas.

Vous pouvez aussi utiliser

 SELECT listagg(column_name, ',') within group (order by column_name) columns
FROM all_tab_columns
WHERE table_name = 'TABLE_NAME'
GROUP BY table_name;

24voto

Matthew McPeak Points 9107

Vous utilisez Oracle 12c ?

Si oui, déterminez si cela répond à vos besoins :

 alter table mytable modify column undesired_col_name INVISIBLE;

Dans ce cas, la colonne undesired_col_name sera complètement utilisable, mais elle sera exclue de toutes les SELECT * et autres (par exemple, %ROWTYPE ) comme si c'était le cas. t exister.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X