Veröffentlicht 8. März 201015 j 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 201015 j von silvi1987
8. März 201015 j executeString := 'Select '''|| v_TableName ||''' as Tabelle from '|| v_TableName ||' where '|| v_ColumnName ||'=''SUCHWORT''; Nach SUCHWORT'' fehlt noch das schließende ' Dim
8. März 201015 j Hallo dr. dimitri, leider immer noch das gleiche Problem. Hatte im Originalcode auch das dritte ' dabei. Muss ausversehen flöten gegangen sein :old
8. März 201015 j 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"
8. März 201015 j 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?
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.