Announcement

Collapse
No announcement yet.

Tabelle jedes Schemas in Schleife durchlaufen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Tabelle jedes Schemas in Schleife durchlaufen

    Hallo,

    Ich habe derzeit folgende Problemstellung und bin mir sicher, dass es hierfür eine einfache Lösung gibt, aber da ich kein Oracle bzw. PL/SQL Spezialist bin wollte ich mich mal an das Forum wenden:

    Folgendes: Innerhalb einer SID habe ich diverse Schemata. Diese bestehen aus den Systemtabellen einer Software, will heissen, sie haben alle die selbe Struktur. Ich hätte jetzt gerne eine Abfrage die alle Schemata einer SID durchläuft und mir einen select befehl auf eine bestimmte tabelle abschickt (ganz trivial: select name from tabelle1).

    Ich habe mit dem Cursor herumexperimentiert, es aber irgendwie nicht hinbekommen.

    Mein Ansatz war ungefähr folgender (pseudo SQL):

    DECLARE
    cursor c is
    select username from all_users order by username;

    BEGIN


    FOR schema in c
    LOOP
    select version from c.version
    END LOOP;

    END;

    Für einen Crack vermutlich eine Lachnummer, aber ich hänge da leider. Wäre toll, wenn mir jemand helfen könnte!

    Danke und liebe Grüße,

    Hannes

  • #2
    Ohne jetzt die Sinnfrage zu stellen, wohin willst Du das Ergebnis denn haben? Du bekommst erstmal einen geöffneten Cursor - mehr nicht.

    Dim
    Zitat Tom Kyte:
    I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

    Comment


    • #3
      Es soll einfach die Versionsnummer aus der jeweiligen tabelle des schemas ausgeworfen werden. Das Ganze würde mir als simple Ausgabe in sqlplus reichen

      Comment


      • #4
        Also in sqlplus würde ich das so machen:
        Code:
        set serveroutput on
        declare
        l_version varchar2(20);
        begin
          for i in(select owner,table_name from all_tables where table_name='XYZ') loop
            execute immediate 'select version from '||i.owner||'.'||i.table_name into l_version;
            dbms_output.put_line('Owner '||i.owner||' Version:||l_version);
          end loop;
        end;
        Ich gehe davon aus, dass die Versionsnummer der einzige eintrag in der Tabelle ist, ansonsten musst Du das SQL noch mit einer passenden WHERE Klausel ausstatten.

        Dim
        Zitat Tom Kyte:
        I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

        Comment


        • #5
          Hey dimitri,

          Vielen Dank! Das funktioniert prächtig. Du hast mir wirklich sehr geholfen und den Kollegen so manche Suche erspart

          Danke!

          Liebe Grüße,

          Hannes

          Comment

          Working...
          X