Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Instrução de seleção do Oracle sql de metaprogramação


Como são colunas diferentes, você deve mencioná-las explicitamente separadamente na lista SELECT. Você não pode fazer isso dinamicamente em SQL puro .

Sugiro usar um bom editor de texto , dificilmente levaria um minuto ou dois para escrever todo o SQL.

Você pode usar DECODE que terá menos sintaxe em vez de CASE expressão que é verbosa.

Por exemplo,
  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

Eu sugiro manter o SQL , e não use PL/SQL . Não são iguais, são motores diferentes. PL --> Procedural Language .

Mas se você insistir, pode usar um cursor para loop para percorrer todas as colunas em [DBA|ALL|USER]_TAB_COLS . Você pode usar um SYS_REFCURSOR para ver os dados. Primeiro você terá que construir o SQL dinâmico .