sql >> Base de Datos >  >> RDS >> Oracle

Declaración de metaprogramación oracle sql select

Dado que son columnas diferentes, debe mencionarlas explícitamente por separado en la lista SELECCIONAR. No puede hacerlo dinámicamente en SQL puro .

Sugeriría usar un buen editor de texto , difícilmente tomaría uno o dos minutos escribir el SQL completo.

Podrías usar DECODE que tendrá menos sintaxis en lugar de CASE expresión detallada.

Por ejemplo,

  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

Yo sugeriría apegarse a SQL y no usar PL/SQL . No son lo mismo, son diferentes motores. PL --> Procedural Language .

Pero si insistes, podrías usar un cursor for loop para recorrer todas las columnas en [DBA|ALL|USER]_TAB_COLS . Podrías usar un SYS_REFCURSOR para ver los datos. Primero tendrás que construir el SQL dinámico .