Oracle
 sql >> Database >  >> RDS >> Oracle

Istruzione di metaprogrammazione oracle sql select

Poiché sono colonne diverse, devi menzionarle esplicitamente separatamente nell'elenco SELECT. Non puoi farlo dinamicamente in puro SQL .

Suggerirei, utilizzando un buon editor di testo , non ci vorrebbe un minuto o due per scrivere l'intero SQL.

Potresti usare DECODE che avrà una sintassi in meno invece di CASE espressione prolissa.

Ad esempio,

  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

Suggerirei di attenersi a SQL e non utilizzare PL/SQL . Non sono la stessa cosa, sono motori diversi. PL --> Procedural Language .

Ma se insisti, allora potresti usare un cursore per loop per scorrere tutte le colonne in [DBA|ALL|USER]_TAB_COLS . Potresti usare un SYS_REFCURSOR per vedere i dati. Per prima cosa dovrai creare l'SQL dinamico .