Zum Inhalt springen

Wo liegt der Fehler??? PL SQL


silvi1987

Empfohlene Beiträge

Hallo,

ich habe folgendes Problem. Ich möchte gerne nach bestimmten Krieterien meine komplette Datenbank absuchen. Dazu existiert eine Tabelle, die alle Tabellen und die Spalten beeinhaltet. So weit so gut!

Folgender PL/SQL Code soll mir die Tabellen ausgeben, die das Suchwort enthalten.


set serveroutput on;

DECLARE

  cursor C_TableNames is

  select table_name, column_name from dba_tab_columns where  data_type='VARCHAR2' and Owner='TINA';   


  v_TableName          varchar2(100):=NULL;

  v_ColumnName        varchar2(100):=NULL;  

  executeString         varchar2(256):=NULL;


BEGIN

  open C_TableNames;

  dbms_output.enable(1000000);

  loop

    fetch C_TableNames into v_TableName, v_ColumnName;

    exit when C_TableNames%NOTFOUND; 

      executeString := 'Select '''|| v_TableName  ||''' as Tabelle from '||  

v_TableName ||' where '|| v_ColumnName ||'=''SUCHWORT'';

      DBMS_OUTPUT.put_line(executeString); 

      execute immediate (executeString);

  end loop; 

  close C_TableNames;

END;

/


Führe ich den Code aus, dann sagt er mir:Fehlerbericht:

ORA-00933: SQL command not properly ended

ORA-06512: at line 20

00933. 00000 - "SQL command not properly ended"

Was will er? :confused: Ein Semikolon in den executeString einbauen? Dann sagt er : invalid charakter

Danke schonmal im Voraus!:)

Bearbeitet von silvi1987
Link zu diesem Kommentar
Auf anderen Seiten teilen

Also bei mri kommt immer noch folgende Meldung:


Fehler beim Start in Zeile 2 in Befehl:

DECLARE

  cursor C_TableNames is

  select table_name, column_name from dba_tab_columns where  data_type='VARCHAR2' and Owner='TINA';   


  v_TableName          varchar2(100):=NULL;

  v_ColumnName        varchar2(100):=NULL;  

  executeString         varchar2(256):=NULL;


BEGIN

  open C_TableNames;

  dbms_output.enable(1000000);

  loop

    fetch C_TableNames into v_TableName, v_ColumnName;

    exit when C_TableNames%NOTFOUND; 

      executeString := 'Select '''|| v_TableName  ||''' as Tabelle from '|| v_TableName ||' where '|| v_ColumnName ||'=''SUCHWORT'';

      DBMS_OUTPUT.put_line(executeString); 

      execute immediate (executeString);

  end loop; 

  close C_TableNames;

END;

Fehlerbericht:

ORA-00933: SQL command not properly ended

ORA-06512: at line 17

00933. 00000 -  "SQL command not properly ended"

:(

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

also nach langem rumprobieren hat sich herausgestellt, dass es funktioniert, allerdings das exit nicht richtig greift und er daher rummault.

Das neue Problem besteht nun aber darin, dass ich mir die Ergebnismenge nicht anzeigen lassen kann. Ich hatte gehofft, dass ein execute immediate with result set on funktioniert. Falsch gehofft! :eek Geht scheinbar nicht.

Gibt es noch eine Möglichkeit?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...