Oracle
 sql >> Base de données >  >> RDS >> Oracle

Métaprogrammation de l'instruction oracle sql select

Puisqu'il s'agit de colonnes différentes, vous devez les mentionner explicitement séparément dans la liste SELECT. Vous ne pouvez pas le faire dynamiquement en SQL pur .

Je suggérerais d'utiliser un bon éditeur de texte , il faudrait à peine une minute ou deux pour écrire tout le SQL.

Vous pouvez utiliser DECODE qui aura moins de syntaxe au lieu de CASE expression qui est verbeuse.

Par exemple,

  DECODE(ONE, 1, 1, 0) AS col1, 
  DECODE(JUST_ONE, 1, 1, 0) AS col2,
  DECODE(ANOTHER_ONE, 1, 1, 0) AS col3,
  DECODE(TWO, 1, 1, 0) AS col4,
  DECODE(JUST_TWO, 1, 1, 0) AS col5,
  DECODE(ANOTHER_TWO, 1, 1, 0) as col6

Je suggérerais de s'en tenir à SQL , et ne pas utiliser PL/SQL . Ce ne sont pas les mêmes, ce sont des moteurs différents. PL --> Procedural Language .

Mais si vous insistez, vous pouvez utiliser un curseur pour la boucle pour parcourir toutes les colonnes dans [DBA|ALL|USER]_TAB_COLS . Vous pouvez utiliser un SYS_REFCURSOR pour voir les données. Vous devrez d'abord créer le SQL dynamique .