2016-12-06 5 views
2

ORACLE: Bisher hat nichts, was ich versucht habe, funktioniert. Ich möchte auf dem Bildschirm die Ergebnisse von select * from my_table anzeigen. In diesem Fall ist my_table = select table_name from all_tables where owner='ABC' and name like 'ABC%'. Der Tabellenname wäre ein Plus, aber der Spaltenname ist eine Notwendigkeit. Ich kann dies in Sekunden mit DB2 machen, kann aber für Oracle nicht ganz übersetzen.oracle select * aus dem Variablen Tabellennamen

Mein Versuch:

variable refcur refcursor; 
    declare 
    my_select  varchar2(64); 
    cursor c_tables is 
     select table_name 
      from all_tables 
     where owner='ABC' and table_name like 'ABC%'; 
    begin 
    for x in c_tables 
     loop 
     dbms_output.put_line(x.table_name); 
     my_select := 'select * from ' || x.table_name; 
     open :refcur for my_select; 
     end loop; 

    exception 
    when no_data_found 
    then dbms_output.put_line('Nothing is found'); 
    end; 
/

In allen meinen Versuchen, die beste, die ich bekommen habe, ist Tabelle nicht existiert Dank

Antwort

0

Ich weiß nicht, wie du angemeldet bist, aber wenn du 'NICHT als ABC angemeldet sind, müssen Sie das Schema zusammen mit dem Tabellennamen, z

Auch das Öffnen eines Cursors ruft nichts davon ab oder zeigt die Daten nirgends an. Sie müssen Logik hinzufügen, um Daten vom Cursor abzurufen, die Daten anzuzeigen und den Cursor zu schließen. Da der Tabellenname nicht festgelegt ist, kann die Datenbank nicht im Voraus angeben, wie Ihre Zeile aussieht. Daher müssen Sie sich mit dem DBMS_SQL-Paket vertraut machen, das für die Behandlung von dynamischem SQL wie diesem verwendet wird.

Viel Glück.

Verwandte Themen