Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Metaprogrammierung Oracle SQL Select-Anweisung

Da es sich um unterschiedliche Spalten handelt, müssen Sie sie in der SELECT-Liste explizit separat erwähnen. In reinem SQL ist dies nicht dynamisch möglich .

Ich würde vorschlagen, einen guten Texteditor zu verwenden , würde es kaum ein oder zwei Minuten dauern, die gesamte SQL zu schreiben.

Sie könnten DECODE verwenden die weniger Syntax anstelle von CASE haben wird Ausdruck, der ausführlich ist.

Zum Beispiel

  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

Ich würde vorschlagen, bei SQL zu bleiben , und verwenden Sie nicht PL/SQL . Sie sind nicht gleich, sie sind unterschiedliche Motoren. PL --> Procedural Language .

Aber wenn Sie darauf bestehen, dann könnten Sie eine Cursor-for-Schleife verwenden um alle Spalten in [DBA|ALL|USER]_TAB_COLS zu durchlaufen . Sie könnten einen SYS_REFCURSOR verwenden um die Daten zu sehen. Zuerst müssen Sie das dynamische SQL erstellen .