Sie können das folgende Skript verwenden, um in allen Spalten Ihres Schemas nach einem Wert zu suchen. Die Ausführungszeit für das Skript hängt von der Anzahl der Tabellen in Ihrem Schema und der Anzahl der Zeilen in jeder Ihrer Tabellen ab.
Ersetzen Sie 'abc' mit dem Wert, den Sie suchen möchten. Außerdem wird das Skript jetzt alle VARCHAR2-Spalten durchsuchen. Sie können die Tabellennamen und -zählungen auch in eine Tabelle einfügen, anstatt eine DBMS_OUTPUT.PUT_LINE auszuführen.
DECLARE
CURSOR cur_tables
IS
SELECT table_name,
column_name
FROM user_tab_columns
WHERE data_type = 'VARCHAR2';
v_sql VARCHAR2(4000);
v_value VARCHAR2(50);
v_count NUMBER;
BEGIN
v_value := 'abc';
FOR c_tables IN cur_tables LOOP
v_sql := 'SELECT count(1) FROM ' || c_tables.table_name || ' WHERE ' || c_tables.column_name || ' = :val' ;
EXECUTE IMMEDIATE v_sql INTO v_count USING v_value;
IF v_count > 0 THEN
DBMS_OUTPUT.PUT_LINE('Table Name ' || c_tables.table_name || ' Column Name ' || c_tables.column_name || ' Row Count ' || v_count);
END IF;
END LOOP;
END;
Es ist unmöglich, dass Sie gleichzeitig MySQL, SQL Server und Oracle gleichzeitig verwenden. Bitte ** ** ** ** fügen Sie zufällig Stichwörter hinzu, die Ihrer Frage bekannt vorkommen. Fügen Sie ** nur die Tags hinzu, die tatsächlich relevant sind **. Wenn Sie nicht sicher sind, lesen Sie die Beschreibung des Tags. Wenn Sie sich danach nicht sicher sind, fügen Sie das Tag nicht hinzu. Wenn es benötigt wird, wird jemand hier hinzufügen. Tags haben eine spezifische Bedeutung. –
Das waren die von SO vorgeschlagenen Tags. Jetzt entfernt. – whyeliah
Leute schlagen vor, Änderungen zu meinen Umbauten vorzuschlagen. Ich stimme ihnen nur zu, wenn sie reinkommen. Ich benutze die Desktop-Software SQLDeveloper von Oracle. Markieren Sie den Beitrag, den Sie für richtig halten. – whyeliah