silvi1987 Geschrieben 8. März 2010 Teilen Geschrieben 8. März 2010 (bearbeitet) 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 8. März 2010 von silvi1987 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 8. März 2010 Teilen Geschrieben 8. März 2010 executeString := 'Select '''|| v_TableName ||''' as Tabelle from '|| v_TableName ||' where '|| v_ColumnName ||'=''SUCHWORT''; Nach SUCHWORT'' fehlt noch das schließende ' Dim Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
silvi1987 Geschrieben 8. März 2010 Autor Teilen Geschrieben 8. März 2010 Hallo dr. dimitri, leider immer noch das gleiche Problem. Hatte im Originalcode auch das dritte ' dabei. Muss ausversehen flöten gegangen sein :old Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 8. März 2010 Teilen Geschrieben 8. März 2010 Also wenn ich das fehlende ' einfüge, dann läuft es bei mir. Dim Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
silvi1987 Geschrieben 8. März 2010 Autor Teilen Geschrieben 8. März 2010 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" Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
silvi1987 Geschrieben 8. März 2010 Autor Teilen Geschrieben 8. März 2010 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.